Java基礎(chǔ)學(xué)習(xí):java遞歸教程

Java基礎(chǔ)學(xué)習(xí):java遞歸教程

長(zhǎng)沙達(dá)內(nèi)教育      2022-03-26 16:00:01     3

Java基礎(chǔ)學(xué)習(xí):java遞歸教程,遞歸是程序語言中的一個(gè)很基礎(chǔ)的應(yīng)用,學(xué)習(xí)遞歸對(duì)理清程序編碼的思路非常有幫助所以在本章中把遞歸也作為學(xué)習(xí)的一部分內(nèi)容。希望

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


    遞歸是程序語言中的一個(gè)很基礎(chǔ)的應(yīng)用,學(xué)習(xí)遞歸對(duì)理清程序編碼的思路


    非常有幫助


    所以在本章中把遞歸也作為學(xué)習(xí)的一部分內(nèi)容。希望讀者了解并掌握它的相關(guān)用法


    我們?cè)谥袑W(xué)時(shí)期都學(xué)過數(shù)學(xué)歸納法,例如求n的階乘


    比如要求5!,必須先求出4!,而要求4!,必須先求3!,要求3!,


    就必須先求2!,要求2!,必須求1!,要求1!,必須求0!而0!=1,所以1!=0!*1=1,再進(jìn)而求2!,3!分別表示



    讀者是否已明白?如果一個(gè)方法調(diào)用了其本身,那么這個(gè)方法就是遞歸,在這行


    程序語句res=factorial5時(shí),就會(huì)執(zhí)行factorial(5),但執(zhí)行factorial5時(shí),又會(huì)調(diào)用factorial(4)這時(shí)要注意,factorial(5)和factorial(4)雖然是同一個(gè)代碼段,但在內(nèi)存中,它的數(shù)據(jù)區(qū)是兩份,而執(zhí)行factorial(4)時(shí)又會(huì)調(diào)用factorial(3),執(zhí)行factorial(3)又會(huì)調(diào)用factorial(2),每調(diào)用一次factorial函數(shù),就會(huì)在內(nèi)存中新增一個(gè)數(shù)據(jù)區(qū),那么這些復(fù)制了多份的函數(shù)大家可以把它看成是多個(gè)不同名的函數(shù)來理解


    但上面這個(gè)函數(shù)有點(diǎn)問題在執(zhí)行factorial(0),它又會(huì)調(diào)用factorial(-1)……,造成死循環(huán),也就是說,在factorial函數(shù)中,需要在適當(dāng)?shù)臅r(shí)候保證不再調(diào)用該函數(shù),也就是不執(zhí)行res=factorial(i-1)*i這條調(diào)用語句


    把上例補(bǔ)充完整結(jié)果如下所示



    裴波納契數(shù)列一個(gè)比較定點(diǎn)的數(shù)學(xué)推理題,這個(gè)數(shù)列的第一位和第二位均為1,其他位數(shù)的值均為前面兩位的和,如圖4.14所示



    我們?cè)囉眠f歸算法求出第20位上的數(shù)值


    遞歸調(diào)用在明白原理的情況下,操作起來比較容易。用遞歸來解決裝波納契數(shù)列問題的代碼如下所示



    輸出結(jié)果



    對(duì)于把十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的過程,讀者可以試著用遞歸的方式來實(shí)現(xiàn),這將有助于理解遞歸的用法


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


Java基礎(chǔ)學(xué)習(xí)

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。