第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

rfact(n-1)一直都沒有執(zhí)行到return ans那句?是什么情況?

rfact(n-1)一直都沒有執(zhí)行到return ans那句?是什么情況?

阿晨1998 2022-07-21 16:11:26
#include<stdio.h>long fact (int n);long rfact (int n);int main(void){int num;printf("這個程序是計算階乘的.\n");printf("輸入一個范圍 0-12 (q為退出):\n");while(scanf("%d",&num)==1){if(num<0)printf("不能是負數(shù). 請重新輸入. \n");else if(num>12)printf("不能大于 12.\n");else{printf("loop: %d factorial = %ld\n",num,fact(num));printf("recursion: %d factorial = %ld\n",num,rfact(num));}printf("輸入一個范圍 0-12 (q為退出):\n");}printf("Bye.\n");return 0;}long fact(int n)//使用循環(huán)計算階乘{long ans;for(ans=1;n>1;n--)ans*=n;return ans;}long rfact(int n)//使用遞歸計算階乘{int ans;if(n>0)ans=n*rfact(n-1);//這個遞歸是怎么算的啊...rfact(n-1)一直都沒有執(zhí)行到return ans那句啊.那它怎么返回值啊.沒返回值怎么計算類?頭暈中~~~elseans=1;return ans;}好心幫幫我吧...我在遞歸這真的很迷茫啊~~~~
查看完整描述

2 回答

?
慕斯709654

TA貢獻1840條經(jīng)驗 獲得超5個贊


if(n>0)
ans=n*rfact(n-1);
else
ans=1;
return ans;

當n>0時,執(zhí)行ans=n*rfact(n-1);,進行rfact壓棧,參數(shù)為n-1
可見,每次壓棧時,參數(shù)都遞減1,直到n=0。

當某一次執(zhí)行rfact函數(shù)時,n=0了,則if(n>0)不成立,執(zhí)行else語句,將ans賦值為1,
在else執(zhí)行完畢后,繼續(xù)執(zhí)行后面的return ans;,
這里就是遞歸的出口了,
從這里開始,依次退棧

查看完整回答
反對 回復 2022-07-24
?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

舉個例子 rfact(2)=2*rfact(1) = 2*1*rfact(0) = 2*1*1(因為rfact(0) = 1)
這樣不就出來啦?

查看完整回答
反對 回復 2022-07-24
  • 2 回答
  • 0 關注
  • 199 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號