大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java基礎學習:java中的遞歸算法

Java基礎學習:java中的遞歸算法

更新時間:2020-04-24 14:15:18 來源:動力節點 瀏覽4280次

    遞歸是工作中經常會使用到的一種算法,比如階乘的計算就是利用遞歸來實現的,如果您還沒有接觸編程方面的內容,要理解遞歸其實并不困難,它就是在一個函數的內部調用了本身,執行的情況特別類似是一個循環,如果要這么說遞歸似乎沒有什么好說的,但是在這里我希望和大家討論的是遞歸這種算法在使用的時候對系統性能的影響,同時也會和大家分析下在遞歸函數執行過程中內存的變化情況。

    特別提醒,在下述內容中方法和函數是同一個意思。

    遞歸的實現

    為了讓大家更好的理解接下來介紹的內容,同時也為了照顧那些并沒有了解過遞歸的讀者,這里我們先來為搭建演示下在Java中到底如何通過遞歸來實現階乘計算的:

Java基礎學習:java中的遞歸算法

    對于上述這段代碼來說,開發人員并不陌生,這也是階乘最簡單的例子,大家可以看到在階乘運算函數factorial()中,如果傳入的參數大于1的話,就會進行一次乘法運算,通過斷點調試理解這個過程并不困難,但是在這里想和大家討論的是在這個階乘運算過程中,系統的內存是如何變化的呢?在上一篇文章中和大家提到過,在系統運行過程中函數參數以及其中的變量都會存放在棧中,那么像這種重復調用自己的函數它的棧是如何變化的呢?通過研究這種變化,就可以知道這種算法在工作中對系統的性能有多大的影響,這是一個值得所有開發人員思考的問題。

    遞歸的分析

    要研究清楚剛才的問題,我們必須先清楚在程序運行過程中,如果一個函數調用了另外一個函數,那么接下來會發生怎樣的情況?這里設置了這樣一段代碼,就是當數值小于10的時候,加上1輸出,如果大于10的話,需要先減去10,再加上1輸出(當然,這段代碼沒有任何作用,純粹是為了制造一個這樣的場景),在Java中可以用如下的方法實現:

Java基礎學習:java中的遞歸算法

    我們可以看到,在這段代碼中,add中調用了另外一個方法sub,但是這時候add方法并沒有結束,所以在程序中應該存在兩個棧,分別是存儲sub、add兩個方法中內容的,也就是如下情況:

Java基礎學習:java中的遞歸算法

    為什么sub對應的棧會在add上邊呢?這是因為棧是后進先出的,因為sub方法在add方法之后執行,所以sub對應的棧應該在add上邊,當sub方法執行完畢之后,系統自動銷毀這塊空間,重新又回到了add方法中,最后當程序結束的時候add方法對應的空間也會被銷毀,其中的變量、參數也會隨著被消失,為了方便大家理解這個過程,這里準備了一張過程圖:

Java基礎學習:java中的遞歸算法

    到這里為止,我們知道了在一個函數中運行另外一個函數,會在內存中為這個函數開辟一塊空間,當這個函數執行完畢之后,這塊空間會被計算機銷毀,重新回到之前的函數中,也就是說在此之前,運行的這個函數占據的空間一直存在,明白這個道理之后,我們再次回到剛開始的遞歸算法中。假設我們現在要計算3的階乘,那么在整個過程中,內存的變化就可以這樣表示:

Java基礎學習:java中的遞歸算法

    很顯然,隨著我們傳入的參數越來越大,整個過程會越來越復雜,而每次調用遞歸函數調用自身之后,都會在計算機中開辟一塊新的空間,這說明使用此種方法對系統的性能會有一定的影響,特別是當我們遞歸執行的次數很多的時候,特別容易造成系統崩潰。

 以上就是動力節點java培訓機構的小編針對“Java基礎學習:java中的遞歸算法”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 色综合天天射 | 亚洲看片网 | 中文字幕在线日本 | 在线你懂得 | 中文字幕久久精品 | 久草手机视频 | 91国内精品线免费播放 | 色偷偷精品视频在线播放 | 国产精品视频久久久久 | 日韩短视频 | 美女hdxxxx中国 | 欧美日韩免费大片 | 亚洲欧美日韩高清在线看 | 欧美精品v国产精品v | 国产专区在线 | 国产精品久久久久久久久 | 国产福利视频奶水在线 | 夜夜超b天天 | 一级毛片高清大全免费观看 | 天天躁夜夜躁很很躁麻豆 | 色偷偷777 | www.性视频| 农村三级孕妇视频在线 | 国产成人精品久久二区二区 | 免费一级网站 | 狠狠色欧美亚洲综合色黑a 狠狠色视频 | 草久视频 | 久草精品视频在线观看 | 亚洲乱码视频在线观看 | 99爱在线精品视频免费观看9 | 九九毛片 | 男女交黄 | 亚洲精品国产经典一区二区 | 久热中文字幕在线精品免费 | 本地毛片 | 26uuu欧美| 久久精品在线视频 | 国产在线一91区免费国产91 | 亚州色拍拍拍 | 澳门一级特黄录像免费播黄 | 99国产精品视频久久久久 |