黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

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

Java基礎學習:java方法的遞歸講解

更新時間:2020-04-13 16:38:53 來源:動力節(jié)點 瀏覽2372次


  棧


  提到方法的遞歸調(diào)用,需要先說一下棧的存儲概念。


  棧是一個先進后出的壓入(push)和彈出(pop)式數(shù)據(jù)存儲結(jié)構(gòu)。若想獲取到棧底的對象,就必須先將這個對象上面的所有的對象全部從棧中移除,否則無法獲取棧底的對象。


  我們來看看程序中棧是如何工作的,當一個方法(調(diào)用者)調(diào)用另一個方法(被調(diào)用者)時,將會將調(diào)用者的參數(shù)和返回值一起壓入到棧中,此時調(diào)用者方法處于棧頂?shù)奈恢茫斦{(diào)用者執(zhí)行到調(diào)用方法的語句時,此時調(diào)用者方法將不會繼續(xù)執(zhí)行,即將執(zhí)行被調(diào)用者方法,那么被調(diào)用者就會與參數(shù)返回值一起壓入到棧中,此時被調(diào)用者處于棧頂?shù)奈恢茫源藭r先執(zhí)行被調(diào)用者方法。直到被調(diào)用者方法執(zhí)行結(jié)束,所有的參數(shù)以及局部變量會隨著方法的執(zhí)行結(jié)束一起彈出棧空間,此時被調(diào)用者方法的返回值將會被帶出方法,數(shù)據(jù)不會隨著方法的出棧而消失,而是會落入到此時棧頂?shù)姆椒ㄖ校苑椒ǖ姆祷刂凳欠祷氐椒椒ǖ恼{(diào)用處


Java基礎學習:java方法的遞歸講解


  下圖是以上代碼執(zhí)行過程中,棧空間中存儲的變化:


Java基礎學習:java方法的遞歸講解


  方法的遞歸調(diào)用


  遞歸調(diào)用是一種特殊的嵌套調(diào)用,是某個方法直接或間接的調(diào)用自己,實際上相當于是循環(huán)執(zhí)行功能代碼。換句話說,就是可以使用方法遞歸調(diào)用完成的功能,同樣也可以使用循環(huán)完成。


  方法遞歸調(diào)用的分類


  直接遞歸:現(xiàn)有fun方法,在fun方法中調(diào)用fun方法,這種調(diào)用方式稱為直接遞歸調(diào)用。


  間接遞歸:現(xiàn)有fun1方法和fun2方法,在fun1方法中調(diào)用fun2方法,在fun2方法中調(diào)用fun1方法,實際并沒有在fun1方法中直接調(diào)用自己,而是調(diào)用了fun2方法,間接的調(diào)用了fun1方法,這種調(diào)用方式稱為間接遞歸調(diào)用。


  遞歸調(diào)用的案例


  案例:設計一個方法,使用循環(huán)計算一個整數(shù)的階乘結(jié)果。


Java基礎學習:java方法的遞歸講解


  當然,這個案例也可以使用方法的遞歸調(diào)用來完成,關(guān)于這個問題使用遞歸調(diào)用完成時,與數(shù)學中的一類題目類似:

  

Java基礎學習:java方法的遞歸講解


  上圖的數(shù)學問題,若想計算解集的話,需要將x的值帶入到表達式中,但是對于x的不同取值范圍,需要使用不同的表達式計算結(jié)果。對于這個數(shù)學問題的計算過程,再次我們就不在演示。


  若使用遞歸調(diào)用的方法計算一個整數(shù)的階乘結(jié)果時,我們已知n的階乘計算方法是從1開始乘一直乘到n為止,所以1的階乘結(jié)果是1。那么計算n的階乘,當n>1時,n的階乘等于n乘n-1的階乘;當n=1時,n的階乘等于1。通過分析,請我們可以使用分支結(jié)果完成分析過程中的:當...則...,當...則...


  我們可以將遞歸調(diào)用寫成一下格式的分段函數(shù):

  

Java基礎學習:java方法的遞歸講解


Java基礎學習:java方法的遞歸講解


  遞歸調(diào)用中的返回值


  由于方法的返回值返回到方法的調(diào)用處,所以方法遞歸調(diào)用返回時是一層一層的向外返回。


  我們都玩過歡樂球,歡樂球中灌了水,再將歡樂球放進一個盛水的小玻璃缸中,小玻璃缸放進一個大玻璃缸中,將歡樂球中捅破時,歡樂球中的水一定是進入到小玻璃缸中,而不是直接進入大玻璃缸中。


  下圖是遞歸調(diào)用計算階乘的返回值的圖,返回值一定是一層一層向外返回,而不是最內(nèi)層的返回整個方法結(jié)束。


Java基礎學習:java方法的遞歸講解


  方法壓棧與方法遞歸


  以上敘述我們說過,一個方法在執(zhí)行時,會壓入棧中,而遞歸調(diào)用相當于多次調(diào)用同一個方法,那么遞歸幾次,就會在棧中開辟幾個相同大小的空間,所以使用遞歸調(diào)用時,比較好性能,我們可以通過循環(huán)來完成遞歸完成的功能。


 以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java基礎學習:java方法的遞歸講解”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。


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

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 小明在看看永久免费平台 | 你懂的免费| 久久国产成人精品 | 免费日韩视频 | 亚洲一区在线免费 | 制服丝袜中文字幕在线观看 | 免费一级毛片在线观看 | 免费在线看黄色片 | 成人伊人| 亚洲精品欧美精品日韩精品 | 天天爆操 | 日日摸狠狠的摸夜夜摸 | 中文字幕精品亚洲无线码二区 | 日日摸夜夜添免费毛片小说 | 性夜黄a爽爽免费视频国产 性夜黄 a 爽免费看 | 黄色片一级免费看 | 中日韩视频在线看免费观看 | 男女性潮高片无遮挡禁18 | 五月激情视频 | 六月丁香激情综合成人 | 无遮挡黄漫动漫yy动漫免费 | 亚洲免费成人 | 亚洲综合网在线观看 | 日韩欧美不卡视频 | 91精品一区二区三区在线观看 | 亚洲 中文 欧美 日韩 在线人 | 老司机午夜在线视频 | 日韩一级一片 | 免费人欧美成又黄又爽的视频 | 欧美色图第二页 | 国产丶欧美丶日韩丶不卡影视 | 一级女性全黄久久生活片 | 男人女人日皮视频 | 一本无线乱码不卡一二三四 | 福利在线网站 | 外国黄色毛片 | 成年人免费观看的视频 | 毛片在线看免费 | 在线观看欧美一区 | 99精品视频看国产啪视频 | 看免费毛片天天看 |