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