關于函數的兩個問題,在括號里。
#include <stdio.h>
int getPeachNumber(int n) ?//這里要定義n,要不編譯器會報錯!
{
? ? int num; ? ?
? ? if(n==10)
? ? {
? ? ? ?return 1; ? ? ?(這里的return1是什么意思?)
? ? }?
? ? else
? ? {
? ? ? ? num = (getPeachNumber(n+1)+1)*2; ? ? ? ? ? ? ? ? ? ?(為什么會自己加到10而不是更多,因為前面n==10嗎,為什么是因為那個?)
? ? ? ? printf("第%d天所剩桃子%d個\n", n, num);?
? ? }
? ? return num;
}
int main()
{
? ? int num = getPeachNumber(1);
? ? printf("猴子第一天摘了:%d個桃子。\n", num);
? ? return 0;
}
2016-12-03
當n=1時 ? 2*(1+getPeachNumber(1+1))
當n=2時 ? 2*(1+getPeachNumber(2+1))
當n=3時 ? 2*(1+getPeachNumber(3+1))
當n=4時 ? 2*(1+getPeachNumber(4+1))
當n=5時 ? 2*(1+getPeachNumber(5+1))
當n=6時 ? 2*(1+getPeachNumber(6+1))
當n=7時 ? 2*(1+getPeachNumber(7+1))?
當n=8時 ? 2*(1+getPeachNumber(8+1))? ?
當n=9時 ? 2*(1+getPeachNumber(9+1))
當getPeachNumber(9+1)=getPeachNumber(10)
因為 ?n=10
return 1;
所以 ??getPeachNumber(10)=1
為什么會加1?
因為(n+1)看成一個整體
所以
當n=9時 ? 2*(1+getPeachNumber(9+1))=4
依次往上推就可得到第一天的;這就是遞推的本意
2016-12-02
return 1;? 表示返回1.? 我的理解為:前面n==10 定義啦第十天只有一個桃子,一次往前推n=9、n=8、、、而不是從n=1開始慢慢到n=10.