請教:為什么只給出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;
}
2016-05-14
num = (getPeachNumber(n+1)+1)*2;這個是怎么循環呢?
2016-04-17
你有一個錯誤?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
2016-03-25
按原題條件可以正向打印
#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;}