java 递归思想的理解
生活随笔
收集整理的這篇文章主要介紹了
java 递归思想的理解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
遞歸
遞歸方法是調(diào)用自身的方法
看一個(gè)階乘的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的時(shí)候 走else 里面 返回的是5*Method(4)? 然后接著走M(jìn)ethod()方法 5*4*Method(3) 接著走5*4*3*Method(2)
然后走到1 的時(shí)候 停止了,return 1 else方法不在走了,那就是 5*4*3*2*1? 這個(gè)過程就是想要的結(jié)果,
所以呢,我們使用遞歸的時(shí)候需要注意
1 遞歸停止的判斷?
2 遞歸的進(jìn)行體(就是他的算法)?
?
為了加深理解在舉一個(gè)案例
?斐波那契數(shù)列
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144 .......
這樣的一系列數(shù)字,后面一項(xiàng)是其前面2項(xiàng)之后
例如當(dāng)前5 設(shè)置為n 其前面一項(xiàng)為n-1 其前面2項(xiàng)為n-2? ?
計(jì)算某一項(xiàng)的公式為(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個(gè)案例 可以看出?
遞歸 一定要有一個(gè)終止其結(jié)束的條件,以及一個(gè)運(yùn)算的方法體..?
遞歸的有點(diǎn):
代碼更簡潔清晰,可讀性更好
遞歸的缺點(diǎn):
遞歸調(diào)用函數(shù),浪費(fèi)空間;
遞歸太深容易造成堆棧的溢出
總結(jié)
以上是生活随笔為你收集整理的java 递归思想的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个剑三好听的七秀名字。
- 下一篇: 丰田的车多少钱啊?