遞迴 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遞迴
- go 遞迴Go遞迴
- JavaScript遞迴JavaScript遞迴
- 分而治之-遞迴遞迴
- 理解遞迴遞迴
- 遍歷二叉樹-------遞迴&非遞迴二叉樹遞迴
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- Java程式設計基礎24——遞迴練習Java程式設計遞迴
- 遞迴和遞推總結遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 迭代與遞迴--你被遞迴搞暈過嗎?遞迴
- 遞迴呼叫 VS 迴圈呼叫遞迴
- 遞迴-*快速排序遞迴排序
- 遞迴小記遞迴
- 理解遞迴 Recurtion遞迴
- C#遞迴C#遞迴
- sql server遞迴SQLServer遞迴
- Vue元件遞迴Vue元件遞迴
- SQL 遞迴思想SQL遞迴
- 遞迴函式遞迴函式
- 談談遞迴遞迴
- 遞迴問題遞迴
- 遞迴總結遞迴
- 遞迴加回溯遞迴
- ?30 秒瞭解尾遞迴和尾遞迴優化遞迴優化
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴