遞歸的通俗解釋 怎么更好地終極理解遞歸算法?
怎么更好地終極理解遞歸算法?一般來(lái)說(shuō),遞歸就是在程序中調(diào)用自己。最典型的例子是計(jì)算整數(shù)的階乘。一般來(lái)說(shuō),編寫(xiě)遞歸程序時(shí),必須有終止條件,否則會(huì)形成無(wú)限遞歸,形成死循環(huán)。n的程序!C語(yǔ)言如下:print
怎么更好地終極理解遞歸算法?
一般來(lái)說(shuō),遞歸就是在程序中調(diào)用自己。最典型的例子是計(jì)算整數(shù)的階乘。
一般來(lái)說(shuō),編寫(xiě)遞歸程序時(shí),必須有終止條件,否則會(huì)形成無(wú)限遞歸,形成死循環(huán)。n的程序!C語(yǔ)言如下:printf(“n!=%dn,result)
}
myudigui(INTN)]{
]if(n==1)/*遞歸程序終止條件:1的階乘等于1。如果n等于1,則返回1*/
return(1)
否則/*n不等于1,則返回n*mydigui(n-1)。因?yàn)椋簄!=n*(n-1)!*/
return(n*my)uudigui(n-1))]}
漢諾塔的遞歸算法不理解?
從上到下設(shè)置漢諾塔板,然后設(shè)置D1、D2、D3,。。。DN,(n>0)注意,前k個(gè)板是s(k)(k>1)遞歸。首先,假設(shè)第一個(gè)n-1板是一個(gè)完整的s(n-1)。將板從a移動(dòng)到C,只需使用橋B即可完成,具體移動(dòng)方法為:(1)s(n-1):a=>b(2)dn:a=>c(3)s(n-1):B=>c實(shí)際上是一個(gè)具有四個(gè)參數(shù)f(n,a,B,C)的函數(shù)。第一步和第三步實(shí)際上回到N-1層的hanota問(wèn)題。在第一步中,我們將前n-2個(gè)板看作一個(gè)整體s(n-2),問(wèn)題是將板從a移動(dòng)到B,然后C作為橋。移動(dòng)方法是:(4)s(n-2):a=>c(5)d(n-1):a=>b(6)s(n-2):C=>b實(shí)際上與(1)、(2)、(3)的步驟相同,但是[bridge]B和C經(jīng)過(guò)一段時(shí)間的調(diào)整:通過(guò)(1)、(2)、(3)總結(jié)函數(shù)式:(1)f(n-1,a,C,B)//參數(shù)a是原位置,C是橋,B是目的地(2)n:a=>c//底板取自原點(diǎn)=,終點(diǎn)(3)f(n-1,B,a,c)//參數(shù)B為原點(diǎn),a為橋,c為終點(diǎn)遞歸解。最好理解這個(gè)問(wèn)題。用非遞歸方法求解這個(gè)問(wèn)題比較困難。實(shí)際上,所有的遞歸算法都可以轉(zhuǎn)化為非遞歸算法。一些低級(jí)語(yǔ)言(如匯編)沒(méi)有遞歸算法。
遞歸法什么意思?
遞歸方法是設(shè)計(jì)和描述算法的強(qiáng)大工具。由于它通常用于描述復(fù)雜的算法,因此在進(jìn)一步介紹其他算法之前將對(duì)其進(jìn)行討論。
如何對(duì)遞歸進(jìn)行理解?
既然您想用簡(jiǎn)單的白話來(lái)解釋遞歸算法,我就給您解釋一下,以確保您理解。
有一個(gè)熟悉的故事解釋了遞歸。
這個(gè)故事不斷地調(diào)用自己,遞歸是函數(shù)多次調(diào)用自己。不同的是,遞歸不能像故事那樣多次調(diào)用自己。遞歸必須有終止條件,它將在多次調(diào)用后終止。
這個(gè)解釋足夠白話了。