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