Java 遞歸的簡(jiǎn)單解釋

當(dāng)一個(gè)函數(shù)用它自己來(lái)定義的時(shí)候就稱(chēng)為是遞歸的。--《數(shù)據(jù)結(jié)構(gòu)與算法分析java語(yǔ)言描述》
例如:我們可以在非負(fù)整數(shù)集上定義一個(gè)函數(shù)f,滿(mǎn)足f(0)=0且f(x)=2f(x-1)+x*x??梢缘玫絝(1)=1,f(2)=6,f(3)=21。

public int f(int x){
    if(x == 0){
        return 0;
    }else{
        return 2 * f(x-1) + x * x;
    }
}

基本法則
1.基準(zhǔn)情況:必須要有某些基準(zhǔn)的情形,不用遞歸就能求解。
2.不斷推進(jìn):對(duì)于那些要遞歸求解的情形,遞歸調(diào)用必須總能朝著一個(gè)基準(zhǔn)情形推進(jìn)。

  • 當(dāng)x=0時(shí)可以算出而不用遞歸。和數(shù)學(xué)公式f(x)=2f(x-1)+xx一樣,若沒(méi)有f(0)=0這個(gè)事實(shí)在,這個(gè)公式就沒(méi)有意義。Java的遞歸若沒(méi)有基準(zhǔn)情況*也是毫無(wú)意義。上述代碼,當(dāng)x=0時(shí)返回0,就是基準(zhǔn)情況。
  • f(4)需要執(zhí)行f(3),因此要執(zhí)行f(2),又要另外執(zhí)行f(1),因此,2*f(0)+1得到f(1)=1。此時(shí)f(0)必須被賦值。由于屬于基準(zhǔn)情況,我們事先得知f(0)=0。從而f(1)=1。然后f(2)、f(3)、f(4)等的值都能夠計(jì)算出來(lái)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最近高等代數(shù)正好講到這里,此篇文章正好對(duì)所學(xué)知識(shí)做一個(gè)具體程序?qū)嵺`。 設(shè)計(jì)算法時(shí)使用遞歸的思想是一個(gè)程序員的基本素...
    FrancisSoung閱讀 4,751評(píng)論 2 3
  • 級(jí)別:★☆☆☆☆標(biāo)簽:「遞歸」「四條遞歸實(shí)現(xiàn)基本原則」作者: 陳彬?qū)徯#?QiShare團(tuán)隊(duì) 引言:這篇文章主要講...
    QiShare閱讀 2,225評(píng)論 0 8
  • 遞歸算法是一些基本數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的基礎(chǔ),不掌握遞歸那很多數(shù)據(jù)結(jié)構(gòu)沒(méi)法說(shuō)了。我們?cè)谶@里總結(jié)一下遞歸的用法。 遞歸簡(jiǎn)論:...
    涼風(fēng)拂面秋挽月閱讀 145評(píng)論 0 0
  • 1.本書(shū)討論的內(nèi)容 設(shè)有一組N個(gè)數(shù)而要確定其中第K個(gè)最大者,稱(chēng)之為選擇問(wèn)題 一種解法 該問(wèn)題的一種解法是將這N個(gè)數(shù)...
    MelloCat閱讀 422評(píng)論 1 2
  • 當(dāng)一個(gè)函數(shù)用它自己來(lái)定義時(shí)就稱(chēng)為是遞歸的。 舉例如下:public static int fun(int x){i...
    advance_bravely閱讀 191評(píng)論 0 1

友情鏈接更多精彩內(nèi)容