遞歸函數(二) 希望解惑
#include <stdio.h>
int getPeachNumber(int n)? //這里要定義n,要不編譯器會報錯!
{
? ? int num;? ??
? ? if(n==10)
? ? {
? ? ? ?return 1;? ? ??
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2;??
? ? ? ? printf("第%d天所剩桃子%d個\n", n, num);?
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
根據?(getPeachNumber(n+1)+1)*2;? ? n=1
那第九天不是應該(1+1)+1)*2=6
有6個桃子嗎,這4是怎么來的? ?糾結啊
2018-12-20
n+1不是n+1個桃子,而是代表第十天,getpeachnumber(n)為第九天時,n+1就是第十天所吃桃子的函數,不是單純n+1
2018-11-24
if(n==10)
? ? {
? ? ? ?return 1;? ? ??
? ? }?
假設n=9
num = (getPeachNumber(n+1)+1)*2; ? ?getPeachNumber(n+1)=getPeachNumber(9+1)=getPeachNumber(10)=1
所以第九天(getPeachNumber(n+1)+1)*2=(1+1)*2=4
2018-11-22
第一天早上有1534個中午吃一半有767晚上吃一個有766個
到第二天早上有766個中午吃一半有383晚上吃一個有382個
以此類推到第九天早上有4個中午吃一半有2晚上吃一個有1個
到第十天就剩下一個了