java 递归思想的理解
生活随笔
收集整理的這篇文章主要介紹了
java 递归思想的理解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
遞歸
遞歸方法是調用自身的方法
看一個階乘的demo
public class Main {/*** 5*4*3*2*1* @param n* @return*/public static int Method(int n){if (n==1){return 1;}else{return n * Method(n-1);}}public static void main(String[] args){System.out.print(Method(5)); //120}
}
n= 5的時候 走else 里面 返回的是5*Method(4)? 然后接著走Method()方法 5*4*Method(3) 接著走5*4*3*Method(2)
然后走到1 的時候 停止了,return 1 else方法不在走了,那就是 5*4*3*2*1? 這個過程就是想要的結果,
所以呢,我們使用遞歸的時候需要注意
1 遞歸停止的判斷?
2 遞歸的進行體(就是他的算法)?
?
為了加深理解在舉一個案例
?斐波那契數列
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 .......
這樣的一系列數字,后面一項是其前面2項之后
例如當前5 設置為n 其前面一項為n-1 其前面2項為n-2? ?
計算某一項的公式為(n-1) +(n-2)??
public class Main {/*** 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 .......* @param n* @return*/public static int Method(int n){if (n==1 || n==2){return 1;}else{return Method(n-1) + Method(n-2);}}public static void main(String[] args){System.out.print(Method(5));}
}
2個案例 可以看出?
遞歸 一定要有一個終止其結束的條件,以及一個運算的方法體..?
遞歸的有點:
代碼更簡潔清晰,可讀性更好
遞歸的缺點:
遞歸調用函數,浪費空間;
遞歸太深容易造成堆棧的溢出
總結
以上是生活随笔為你收集整理的java 递归思想的理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个剑三好听的七秀名字。
- 下一篇: Kotlin setText 使用