java遞歸算法實例分析
遞歸算法設計的基本思想是:
對于一個復雜的問題,把原問題分解為若干個相對簡單類同的子問題,繼續(xù)下去直到子問題簡單到能夠直接求解,也就是說到了遞推的出口,這樣原問題就有遞推得解。
在做遞歸算法的時候,一定要把握住出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口是非常好理解的,就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。
關鍵要抓住的是:
(1)遞歸出口
(2)地推逐步向出口逼近
遞歸就是方法自身調用自身的行為,注意要寫好遞歸頭,也就是什么時候退出遞歸,
避免出現(xiàn)死循環(huán)。
實例1,通過遞歸打印1~100
package com.lanhuigu.base; public class CursionTest { private static int i = 0; /** * 遞歸打印1到100 */ public static void testCursion01() { i++; // 自增 if (i <= 100) { // 小于等于100時回調,否則跳出回調,避免死循環(huán) System.out.println(i); testCursion01(); // 回調: 自身調用自身 } else { System.out.println("Game Over!"); } } public static void main(String[] args) { testCursion01(); // 打印1~100 } }
實例2,通過遞歸計算某個數(shù)的階乘
package com.lanhuigu.base; public class CursionTest { /** * 遞歸計算某個數(shù)的階乘 */ public static int testFactorial(int n) { if (n == 1) { return 1; } else { return n*testFactorial(n-1); } } public static void main(String[] args) { System.out.println(testFactorial(5)); // 計算5的階乘 } }
關于遞歸計算階乘,遞歸內(nèi)存分析結構圖:
先放長線,最后收線,然后把魚拉上岸。
總結
以上就是本文關于java遞歸算法實例分析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
Java通過動態(tài)規(guī)劃設計股票買賣最佳時機
動態(tài)規(guī)劃可謂是大名鼎鼎,筆試面試中的高頻考點,也是重點難點,動態(tài)規(guī)劃類型題目靈活多變,難度系數(shù)也相對較高,往往我們做不好動態(tài)規(guī)劃的題目就會與心儀的offer失之交臂,本篇文章我們就一起來研究一下動態(tài)規(guī)劃設計股票買賣最佳時機2022-10-10SpringBoot 實戰(zhàn) 之 優(yōu)雅終止服務的方法
本篇文章主要介紹了SpringBoot 實戰(zhàn) 之 優(yōu)雅終止服務的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05Java創(chuàng)建多線程的幾種方式實現(xiàn)
這篇文章主要介紹了Java創(chuàng)建多線程的幾種方式實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10