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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么确定自己是第几层递归_递归(1)——理解递归思想

發布時間:2024/9/30 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么确定自己是第几层递归_递归(1)——理解递归思想 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通俗易懂的博客:
博客:
遞歸的使用(圖解)_ITdevil的博客-CSDN博客_遞歸圖解

什么是遞歸?

簡單的說:遞歸就是方法自己調用自己

遞歸特點:

  • 有臨界點
  • 當一個方法執行完畢,或者遇到retrun,就會返回,函數就是出棧。

圖解遞歸

== 詳情請閱讀文章頭部推薦的博客,我覺得寫的通俗易懂 ==

首先是執行main()方法,main()方法進棧,然后調用main()方法中的add(5)方法,add(5)方法進棧。當執行到return add(4)+5時,add(5)方法會調用add(4)方法,add(4)方法進展,然后依次遞歸調用,直到add(1)方法進棧為止。

  • 方法沒有返回值,也沒有執行完畢,所以壓棧了。
  • 直到壓棧到臨界點 add(1),返回了確定的數值1。
  • 所以add(2) 也能返回值了,依次出棧,最后返回add(5)。

遞歸中函數的執行順序

按照上圖圖解,我們難免會有疑惑,到底是add(5)先調用,還是add(1)先調用?

遞歸過程中函數的執行順序是怎么樣的呢?我們這里寫代碼來測試一下

public class DgTest {public static void test(int n){System.out.println("調用自身之前"+n);if(n > 2){ //調用自身test(n-1);}System.out.println("調用自身之后"+n);}public static void main(String[] args) {test(4);} }

結論:

可以清楚的看到,在調用自身之前,是從4開始的,test(4),test(3),test(2),依次壓棧,輸出了調用自身之前的內容,由于此時函數還沒有執行完成,所以暫時壓棧。

到了test(2)之后,就沒有調用自身了,函數能夠執行完畢,所以依次能夠執行,依次彈棧,執行test(2),test(3),test(4)調用自身之后的內容

后續更新遞歸解題實例

總結

以上是生活随笔為你收集整理的怎么确定自己是第几层递归_递归(1)——理解递归思想的全部內容,希望文章能夠幫你解決所遇到的問題。

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