在y!=0的情況下,fun會(huì)調(diào)用自己,要等y=0后,一層層往上。就到到fun(1)的時(shí)候再會(huì)執(zhí)行printf("%d",d);putchar('\n');然后會(huì)執(zhí)行fun(y*2+d)后面的,printf("%d",d);putchar('\n'),然后再往上,,,直到你最初的fun(n)后面的printf("%d",d);putchar('\n')。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比崇州網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式崇州網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋崇州地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
你可以在printf("%d",d),后面加一個(gè)printf("n
=
%d\n",
n);
可以看到如下結(jié)果
8
n
=
1
1
n
=
2
n
=
4
n
=
8
樓主的程序有兩處錯(cuò)誤,給你修正了一下:
局部?jī)蛇厁沒(méi)有引用,給你刪掉
main函數(shù)沒(méi)有定義類型,加void
#include?stdio.h
void?fun(int?n)
{
int?d,y;//x給你刪掉了
d=n%2;
y=n/2;
if(y!=0)
{
fun(y);
}
printf("%d",d);
//putchar('\n');這個(gè)沒(méi)用我給你注釋了
}
void?main()
{
int?n;
printf("enter?a?number\n");
scanf("%d",n);
if(n0)
printf("Input?data?error\n");
else
fun(n);
putchar('\n')//最后才調(diào)用這句代碼
}
下面給你分析一下:
? fun()函數(shù)是一個(gè)遞歸函數(shù),什么意思呢?意思就是它會(huì)調(diào)用本身,每次函數(shù)都會(huì)先執(zhí)行代碼d=n%2;y=n/2;然后在判斷n是否大于0,如果n大于0,函數(shù)繼續(xù)回調(diào),如果n=0,函數(shù)就結(jié)束了回調(diào),整個(gè)程序也就完成了。
? 至于你說(shuō)的執(zhí)行完了這句還會(huì)不會(huì)執(zhí)行后面的printf("%d",d);這是肯定的,因?yàn)橐敵霭?,給你看看運(yùn)行結(jié)果
因?yàn)檫f歸在輸出語(yǔ)句之前,所以,最后一次遞歸的值在最先輸出。
執(zhí)行順序?yàn)椋?/p>
這是數(shù)組a[10]
dis(a[i]);//初始為啊0,就是a[0],然后在函數(shù)內(nèi)部調(diào)用dis(a[i+1]),就是a[1],然后遞增到數(shù)組結(jié)束
dis(a[i])????//i=0;
dis(a[i]+1)//i=0+1
dis(a[i]+1)//i=1,i+1=1+1=2.............
是第一個(gè)執(zhí)行完再執(zhí)行第二個(gè)
遞歸調(diào)用可以這樣理解,就是想像有很多個(gè)函數(shù)的復(fù)制體,每次調(diào)用自己都是在調(diào)用一個(gè)復(fù)制體,一直到滿足
if(start=end)
return;
然后再一層一層返回。
新聞標(biāo)題:c語(yǔ)言遞歸函數(shù)的執(zhí)行順序 c語(yǔ)言遞歸程序
文章來(lái)源:http://m.rwnh.cn/article24/hiiije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、品牌網(wǎng)站設(shè)計(jì)、建站公司、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站排名、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)