請問以下代碼倒序輸出每天所剩桃子數 為什么到1就停止 為什么不繼續輸出第0天第-1天-2天????求教
#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); //天數,所剩桃子個數
??? }//就是這個位置? 為什么編譯器到所剩天數1就會自動停止 不繼續0? -1? 或者更????
??? return num;
}
int main()
{
??? int num = getPeachNumber(1);
??? printf("猴子第一天摘了:%d個桃子。\n", num);
??? return 0;
}
2017-02-27
剛剛我又試了一下,確實是我說的那樣,當改為2的時候,就算到了第二天。當然你也可以嘗試看看。
2017-02-27
這里我也看了很久,個人以為是因為getPeachNumber(1).括號里面是1,表示遞歸基數為1,就是倒數的最后一個數,如果是2的話,應該就會最后算到第二天
2017-02-23
n=10時得到getPeachNumber(n)的值有if條件可知為1,也就是不會繼續向前運行,不會有getPeachNumber(n+1(11))存在
2017-02-23
代碼中,在第十天時,輸出return 1,這里的return 1,其實是指不正常結束循環,就好像有返回值的代碼的最后會有return 0(表示正常結束循環),因為題目要求的是求第一天的桃子數,而如果求得是第十天就不符合題目要求,不是要求的結果,所以非正常結束。