遞歸算法設計的基本思想是:
對於一個複雜的問題,把原問題分解為若干個相對簡單類同的子問題,繼續下去直到子問題簡單到能夠直接求解,也就是說到了遞推的出口,這樣原問題就有遞推得解。
在做遞歸算法的時候,一定要把握住出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口是非常好理解的,就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。
關鍵要抓住的是:
(1)遞歸出口
(2)地推逐步向出口逼近
遞歸就是方法自身調用自身的行為,注意要寫好遞歸頭,也就是什麼時候退出遞歸,
避免出現死循環。
實例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時回調,否則跳出回調,避免死循環System.out.println(i);testCursion01();// 回調: 自身調用自身} else {System.out.println("Game Over!");}}public static void main(String[] args) {testCursion01();// 打印1~100}}實例2,通過遞歸計算某個數的階乘
package com.lanhuigu.base;public class CursionTest {/** * 遞歸計算某個數的階乘*/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的階乘}}關於遞歸計算階乘,遞歸內存分析結構圖:
先放長線,最後收線,然後把魚拉上岸。
總結
以上就是本文關於java遞歸算法實例分析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!