遞歸有一個堆棧的概念,那就意味著他是一個反理解的過程:就象數(shù)學遞推一樣,你知道第一項,第二項,又知道通項公式,那你就可以知道任何一項。

在雞西梨樹等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站設計制作、做網站 網站設計制作按需制作,公司網站建設,企業(yè)網站建設,品牌網站建設,營銷型網站建設,外貿網站制作,雞西梨樹網站建設費用合理。
然后你看代碼:fun(0)==0,fun(1)==1;是告訴你一二項。
fun(n)==fun(n-1)+fun(n-2);是告訴你通項公式。那么,你就可以知道任何一項。你這樣理解就差不多了,具體機器是怎么操作的,那很復雜的,也不需要明白!!!!
我給你舉個簡單的例子你就明白了,你可以假設n=3
然后代入這個函數(shù),a(3)=a(2)+5;而a(2)=a(1)+5;a(1)=1
所以最后就是a(3)=1+5+5=11…
同理你可以算出a(10)=1+5*9=46
滿意請采納
第一級遞歸:n=483,i=n/10=48≠0
注意此時先遞歸調用convert(48),待遞歸返回再輸出當前n的個位數(shù)字n%10=3
第二級遞歸:n=48,i=n/10=4≠0
此時繼續(xù)遞歸調用convert(4),待遞歸返回再輸出當前n的個位數(shù)字n%10=8
第三級遞歸:n=4,i=n/10=0
此時遞歸終止,先輸出當前n的個位數(shù)字n%10=4
再返回上一級遞歸輸出8,最后返回第一級遞歸輸出3
因此最終輸出為:4 8 3
沒有遞歸,你把自己想的太高端了
先執(zhí)行fun(d)也就是fun(1)
d=5,d=d+p=5+1=6
打印了6
然后執(zhí)行fun(a+fun(d))=fun(3+6)=fun(9)
d=6,d=d+p=6+9=15
打印了15
最后打印fun(a+fun(d))
等于15
這個很好理解啊,你看看你輸入的參數(shù)什么就可以了。
你函數(shù)的聲明是void fuck ( int n ,char o, char t, char th)
第一次調用你是fuck ( n, 'A','B','C');這時,o=A,t=B,th=C,所以輸入
printf ("%c %c %c\n",t,o,th);就是BAC,
然后你fuck(n-1,t,o,th);,這時o=原來的t=B,t=原來的o=A,th=C,輸出
printf ("%c %c %c\n",t,o,th);就是ABC了如此類推
從主函數(shù)fun(6,x)開始調用。調用的時候,實參6和x將自身的值傳遞給形參n,s,接著,開始執(zhí)行fun函數(shù)體內的語句第一次調用:判斷if(n==0||n==1),此時的n值為6,不滿足條件,執(zhí)行else部分語句。 fun(n-1,f1);fun(n-2,f2);先調用fun(n-1,f1);而fun(n-2,f2);需要當fun(n-1,f1);符合if條件以后才輪到它執(zhí)行第二次調用:此時,形參n=6轉變?yōu)閷崊,fun(n-1,f1)等價于fun(5,f1),繼續(xù)判斷,if(n==0||n==1),又不滿足條件,于是,重復之前的操作,轉向else部分執(zhí)行。 fun(n-1,f1);fun(n-2,f2);此時的n=5,同樣是先調用fun(n-1,f1);后面那個fun(n-2,f2);同樣處于等待狀態(tài),等待前面的 fun(n-1,f1);符合IF條件后才輪到它執(zhí)行,于是,fun(n-1,f1);就這樣一層一層執(zhí)行下去,每執(zhí)行一次,n的值減一,當n=1的時候,執(zhí)行if部分,這時,便可以在fun(n-1,f1);執(zhí)行完畢只有繼續(xù)執(zhí)行fun(n-2,f2);,接著,返回前一次調用的狀態(tài),開始執(zhí)行fun(n-2,f2);比如當n=2的時候,執(zhí)行完fun(2-1=1,f1)以后,便開始執(zhí)行fun(2-2=0,f2);和它后面的語句,最終,函數(shù)返回上一次調用的狀態(tài),即fun(3,f1);此時,fun(3,f1)已經執(zhí)行完畢,因為之前我們已經把fun(2,f1)執(zhí)行完了,接著,應該執(zhí)行的是fun(3-2=1,f2);當這個函數(shù)最后終也符合if部分要求,又返回到前面的fun(4,f1),執(zhí)行完后,開始執(zhí)行fun(4,f2),這樣一個流程。通常來說,遞歸可以簡化代碼,但同時也會增加系統(tǒng)開銷并且讓程序閱讀的時候要比正常的順序程序難以理解一些。不過,現(xiàn)代的硬件飛速發(fā)展,用遞歸是完全可以的。
分享名稱:遞歸函數(shù)調用c語言 遞歸調用C語言
標題URL:http://www.chinadenli.net/article46/doddeeg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站內鏈、用戶體驗、建站公司、微信公眾號、手機網站建設、企業(yè)網站制作
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)