請(qǐng)教:為什么只給出n=10就可以打印9~1天的所剩桃子數(shù)呢?
#include <stdio.h>
int getPeachNumber(int n)
{
? ? int num; ? ?//定義所剩桃子數(shù)
? ? if(n==10)
? ? {
? ? ? ?return 1; ? ? ? //遞歸結(jié)束條件
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2; ? //這里是不應(yīng)該用遞歸呢?
? ? ? ? printf("第%d天所剩桃子%d個(gè)\n", n, num); //天數(shù),所剩桃子個(gè)數(shù)
? ? }
? ? return num;
}
int main()
{?
? ? getPeachNumber(10);
? ??
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個(gè)桃子。\n", num);
? ? return 0;
}
2016-05-14
num = (getPeachNumber(n+1)+1)*2;這個(gè)是怎么循環(huán)呢?
2016-04-17
你有一個(gè)錯(cuò)誤?getPeachNumber(10); ? 你的代碼中這一行的下面已經(jīng)給出來(lái)int num=?getPeachNumber(1);
你再給他一個(gè)?getPeachNumber輸入一個(gè)10,就重復(fù)了。
你輸入的不是10而是1!
在語(yǔ)句 int num=??getPeachNumber(1); 中括號(hào)里面的就是你要輸入的值。
為什么等得到9~1天的桃子數(shù)是因?yàn)槟闶褂昧诉f歸函數(shù)num = (getPeachNumber(n+1)+1)*2; 這句話讓程序能夠一次次循環(huán)使用上一個(gè)語(yǔ)句的結(jié)果
如
n=1時(shí)
num =( getPeachNumber(2)+1)*2;?
繼續(xù)遞歸
num = (getPeachNumber(3)+1)*2;?
繼續(xù)
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;?
直到結(jié)束n==10
2016-03-25
按原題條件可以正向打印
#include<stdio.h>
int main(){
int day,num;
num = 1;
printf("第10天剩余桃子%d個(gè)\n",num);
for ( day=9;day>0;day--) {//從剩下桃子計(jì)算,吃9天
num = (num+1)*2;
printf("第%d天剩余桃子%d個(gè)\n",day,num);}
printf("最初的時(shí)候共有桃子 %d 個(gè)\n",num);
return 0;}