不知道程序哪錯了
#include <stdio.h>
int getPeachNumber(n)
{
? ? int num;? ? //定義所剩桃子數
? ? if(n==10)
? ? {
? ? ? ?return 1;? ? ?//遞歸結束條件
? ? }?
? ? else
? ? {
? ? ? ? num = getPeachNumber(n)-n/2-1;? ?//這里是不應該用遞歸呢?
? ? ? ? printf("第%d天所剩桃子%d個\n",n,num); //天數,所剩桃子個數
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
}
求大神,這個程序有錯但是他說我編譯成功了,哪里錯了?
2020-04-10
num = getPeachNumber(n)-n/2-1; 這個遞歸條件有問題。
正確的應該是這樣:num = (getPeachNumber(n+1)+1)*2;
這是從第10天往后倒推的遞歸。第10天剩一個,第9天剩(第十天剩的個數+1)*2 。然后再算第八天,第七天... 最后算到第一天。剩的個數我們用函數表示f(x),這樣,f(9)=(f(10)+1)*2.