遞迴 Java
遞迴的理解難點在於先有一個壓棧,然後當尋找到遞迴出口時,會從棧頂return。如果您還不太明白是什麼意思,先看下面程式碼,想想結果是什麼?
public class test1{
static int i = 0;
public static int test(){
while(i < 7){
i++;
i = test();
}
System.out.println(i);
return 520;
}
public static void main(String[] args) {
test();
}
}
最後結果是:
7
520
520
520
520
520
520
520
簡單說明一下這個過程:main方法 --》 test() --》 i=0 滿足while(i<7), i=1, i=test()呼叫test() 並把值壓入棧底 --》依然滿足,再次重複上面過程,往遞迴棧中壓入新的值 --》…… --》i=6時,再次進入while(){……}程式碼段:i=7,最後一次呼叫test(),這樣一共呼叫了7次,system.out.println(i);列印出7,return 520;return給誰?怎麼return?這才是遞迴的理解難點!此時程式碼並沒有結束!==》返回,棧中依次return,把餘下的程式碼執行完!System.out.println(i);再次列印520 ==》呼叫7次!7個“我愛你”!
相關文章
- Java方法06:遞迴Java遞迴
- Java遞迴演算法Java遞迴演算法
- Java - 13 方法的遞迴Java遞迴
- 遞迴和尾遞迴遞迴
- Java學習之理解遞迴Java遞迴
- Java中的遞迴原理分析Java遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- 快速排序【遞迴】【非遞迴】排序遞迴
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- java-遞迴(檔案查詢)Java遞迴
- Java遞迴演算法的使用Java遞迴演算法
- java常見遞迴練習題Java遞迴
- Java 資料夾遞迴遍歷Java遞迴
- 30、java中遞迴演算法Java遞迴演算法
- 遞迴遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- [java] 二叉樹的後序遍歷(遞迴與非遞迴實現)Java二叉樹遞迴
- ACM(遞迴遞推—A)ACM遞迴
- Java不用遞迴的迭代快速排序示例Java遞迴排序
- java將字串逆序遞迴方式輸出Java字串遞迴
- 簡單的java遞迴演算法Java遞迴演算法
- Java實現多級選單(遞迴)Java遞迴
- ACM(遞迴遞推—I)ACM遞迴
- JavaScript遞迴JavaScript遞迴
- go 遞迴Go遞迴
- 理解遞迴遞迴
- Java實現遞迴查詢樹結構Java遞迴
- 面試題—Java遞迴實現約瑟夫環面試題Java遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 遞迴和遞推總結遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- Java程式設計基礎24——遞迴練習Java程式設計遞迴
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 請看程式碼(關於JAVA的遞迴呼叫)Java遞迴
- Java 執行緒內 遞迴 Bug 一例Java執行緒遞迴
- 遞迴函式遞迴函式
- 理解遞迴 Recurtion遞迴