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

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解

Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解

更新時(shí)間:2020-04-13 16:38:53 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽2419次


  棧


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


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


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


Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


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


Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


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


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


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


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


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


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


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


Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


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

  

Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


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


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


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

  

Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


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


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


  我們都玩過(guò)歡樂(lè)球,歡樂(lè)球中灌了水,再將歡樂(lè)球放進(jìn)一個(gè)盛水的小玻璃缸中,小玻璃缸放進(jìn)一個(gè)大玻璃缸中,將歡樂(lè)球中捅破時(shí),歡樂(lè)球中的水一定是進(jìn)入到小玻璃缸中,而不是直接進(jìn)入大玻璃缸中。


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


Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解


  方法壓棧與方法遞歸


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


 以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java方法的遞歸講解”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€(xiàn)咨詢(xún),有專(zhuān)業(yè)老師隨時(shí)為你服務(wù)。


提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 国产一级一片免费播放i | 欧美午夜寂寞影院安卓列表 | 九九99九九精彩 | 久久久亚洲欧洲国产 | 日本中文字幕在线观看 | 国产欧美日韩精品第二区 | 视色视频 | 国产欧美日韩精品高清二区综合区 | 四虎精品久久 | 福利视频自拍 | a级成人毛片久久 | 国语毛片 | 日本九九视频 | 毛片免费全部播放一级 | 久久精品国产精品国产精品污 | 日韩精品一区二区三区在线观看l | 色综合色综合色综合色综合网 | 亚洲综合网址 | 亚洲精品中文字幕区 | 欧美国产永久免费看片 | 大乳女做爰中文字幕 | 亚洲精品高清国产麻豆专区 | 日本不卡视频免费 | www.色涩| 久久伊人影院 | 人人干夜夜操 | 爱操在线 | 久久精品一区二区国产 | 青青青免费在线视频 | 欧美综合视频在线观看 | 天堂成人一区二区三区 | 欧美麻豆久久久久久中文 | 国产成人一区二区视频在线观看 | 四虎永久免费在线观看 | 四虎最新紧急入口 | 精品夜夜春夜夜爽久久 | 国产伦精品一区二区三区网站 | 久久久一区二区三区 | 亚洲精品久久久久久下一站 | 色黄网站成年女人色毛片 | 久久综合偷偷噜噜噜色 |