疑惑 some questions
為什么這個自定義 的函數(shù)不用調(diào)用就執(zhí)行了以及為什么先從n=9開始
#include <stdio.h>
int getPeachNumber(int n)
{
? ? int num;? ? //定義所剩桃子數(shù)
? ? if(n==10)
? ? {
? ? ? ? return 1;? ? ? //遞歸結束條件
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2;? ?//這里是不應該用遞歸呢?
? ? ? ? printf("第%d天所剩桃子%d個\n", n, num); //天數(shù),所剩桃子個數(shù)
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
}
2018-09-13
為什么這個自定義 的函數(shù)不用調(diào)用就執(zhí)行了以及為什么先從n=9開始
#include <stdio.h>
int getPeachNumber(int n)
{
? ? int num;? ? //定義所剩桃子數(shù)
? ? if(n==10)
? ? {
? ? ? ? return 1;? ? ? //遞歸結束條件
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2;??
?//這里N=1代入,
num=(getPeachNumber(1+1)+1)*2
再調(diào)用getPeachNumber(2)
以此一直調(diào)用到(getPeachNumber(9+1)+1)*2
這時候getPeachNumber(10)=1
所以num=(1+1)*2=4
重點:這時候代碼讀下一行printf("第%d天所剩桃子%d個\n", n, num);
輸出? 第9天所剩桃子4個
這時候跳回我們上一個調(diào)用num=(getPeachNumber(8+1)+1)*2
則num=(4+1)*2=10,再輸出。
以此類推
? ? ? ? printf("第%d天所剩桃子%d個\n", n, num);?
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);//調(diào)用在這里
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
}
2018-09-14
輸出第九天后,為什么會跳回到上一個調(diào)用