為什么遞歸是num =(getPeachNumber(n+1)+1)*2
#include <stdio.h>
int getPeachNumber(n)
{
??? int num;??? //定義所剩桃子數(shù)
??? if(n==10)
??? {
?????? return 1;?????? //遞歸結(jié)束條件
??? }
??? else
??? {
??????? num = (getPeachNumber(n+1)+1)*2;?? //這里是不應(yīng)該用遞歸呢?
??????? printf("第%d天所剩桃子%d個\n", n, num); //天數(shù),所剩桃子個數(shù)
??? }
??? return num;
}
int main()
{
??? int num = getPeachNumber(1);
??? printf("猴子第一天摘了:%d個桃子。\n", num);
??? return 0;
}
2018-10-11
倒著來看,當(dāng)n=9的時候 n+1=10 if成立 返回1 也就是說getPeachNumber(10) = 1? ?||? ? 而getPeachNumber(9) = (getPeachNumber(10)+1)*2 = (1+1)*2 = 4? ?||? ?getPeachNumber(8) = (getPeachNumber(9)+1)*2 = 10, 然后就可以算出來了, 遞歸就是一個函數(shù)s(n)里面再套上s(n+1)? s(n+1)里面再套上s((n+1)+1)..... 我也是前天才開始學(xué)的,花了昨天一天才把這個遞歸搞的差不多懂一點(diǎn). 這也只是我個人不成熟的看法 有什么不對的地方請多多包涵? : )
2018-12-22
還是沒看懂啊,但是他在main函數(shù)中的getPeachNumber()這個函數(shù)中實(shí)參傳的是1啊,所以在else哪里的getPeachNumber()的n也是等于(getPeachNumber(1+1)+1)*2啊
2018-10-17
thank