亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

請教:為什么只給出n=10就可以打印9~1天的所剩桃子數呢?

#include <stdio.h>

int getPeachNumber(int n)

{

? ? int num; ? ?//定義所剩桃子數

? ? if(n==10)

? ? {

? ? ? ?return 1; ? ? ? //遞歸結束條件

? ? }?

? ? else

? ? {

? ? ? ? num = (getPeachNumber(n+1)+1)*2; ? //這里是不應該用遞歸呢?

? ? ? ? printf("第%d天所剩桃子%d個\n", n, num); //天數,所剩桃子個數

? ? }

? ? return num;

}

int main()

{?

? ? getPeachNumber(10);

? ??

? ? int num = getPeachNumber(1);

? ? printf("猴子第一天摘了:%d個桃子。\n", num);

? ? return 0;

}


正在回答

3 回答

num = (getPeachNumber(n+1)+1)*2;這個是怎么循環呢?

0 回復 有任何疑惑可以回復我~

你有一個錯誤?getPeachNumber(10); ? 你的代碼中這一行的下面已經給出來int num=?getPeachNumber(1);

你再給他一個?getPeachNumber輸入一個10,就重復了。

你輸入的不是10而是1!

在語句 int num=??getPeachNumber(1); 中括號里面的就是你要輸入的值。

為什么等得到9~1天的桃子數是因為你使用了遞歸函數num = (getPeachNumber(n+1)+1)*2; 這句話讓程序能夠一次次循環使用上一個語句的結果

n=1時

num =( getPeachNumber(2)+1)*2;?

繼續遞歸

num = (getPeachNumber(3)+1)*2;?

繼續

num = (getPeachNumber(4)+1)*2;?

num = (getPeachNumber(5)+1)*2;

num = (getPeachNumber(6)+1)*2;??

num = (getPeachNumber(7)+1)*2;?

num = (getPeachNumber(8)+1)*2;

num = (getPeachNumber(9)+1)*2;?

直到結束n==10

0 回復 有任何疑惑可以回復我~

按原題條件可以正向打印

#include<stdio.h>
int main(){
int day,num;
num = 1;
printf("第10天剩余桃子%d個\n",num);
for ( day=9;day>0;day--) {//從剩下桃子計算,吃9天
num = (num+1)*2;
printf("第%d天剩余桃子%d個\n",day,num);}
printf("最初的時候共有桃子 %d 個\n",num);
return 0;}


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

請教:為什么只給出n=10就可以打印9~1天的所剩桃子數呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號