日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java 递归思想的理解

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 递归思想的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。