為什么答案里面是倒著打印而不是從第一天開始打印
#include <stdio.h>
int getPeachNumber(n)
{
?? ?int num;??? //定義所剩桃子數(shù)
?? ?if (n == 10)
?? ?{
?? ??? ?return 1;//遞歸結(jié)束條件
?? ?}
?? ?else
?? ?{
?? ??? ?num = 2*(getPeachNumber(n+1)+1);?? //這里是不應(yīng)該用遞歸呢?
?? ??? ?printf("第%d天所剩桃子%d個\n", n, num); //天數(shù),所剩桃子個數(shù)
?? ?}
?? ?return num;
}
int main()
{
?? ?int num = getPeachNumber(1);
?? ?printf("猴子第一天摘了:%d個桃子。\n", num);
?? ?system("pause");
?? ?return 0;
}
2018-10-07
數(shù)據(jù)結(jié)構(gòu)棧中數(shù)據(jù)是先進后出的,遞歸也是一樣的,因此是倒著打印的,可以百度一下仔細(xì)看一下
2018-10-03
在此代碼的遞歸中g(shù)etPeachNumber(n+1)(簡稱為g(n))num=(g(n+1)+1)會使函數(shù)一直調(diào)用自己 當(dāng)n==10的時候會得到一個返回值1并返回給g(9)當(dāng)g(9)得到返回值后就會向下執(zhí)行printf,執(zhí)行完后再把值返回給g(8),g(8)再執(zhí)行printf 以此類推 所以是倒過來打印的