遞歸函數 關于n==1
#include <stdio.h>
/* 定義獲取單詞數量的函數 */
int getWordNumber(int n)
{? ?
? ? if(n == 1)
? ? {
? ? ? ? return 1;? ? //第一天只會1個單詞
? ? }
? ? else{
? ? ? ? return getWordNumber(n-1)+n;? ? ? ?//到第天會的單詞數量
? ? }
}
int main()
{
? ? int num = getWordNumber(10);? ? ?//獲取會了的單詞數量
? ? printf("小明第10天記了:%d個單詞。\n", num);
? ? return 0;
}
前面已經算出10+9+8······+1
最后當n==1的時候結束了循環,那為什么返回的結果不是1 而是55呢????????? 卡在這里了 想不明白
2018-11-22
當n==1的時候確實結束了循環且結果為1,但僅僅結束的循環是getwordnumber(1)
在這循環外應該是getwordnumber(2)+3
其中getwordnumber(2)=getwordnumber(1)+2
因此類推getwordnumber(3)=getwordnumber(2)+3...
????????? ? ...getwordnumber(10)=getwordnumber(9)+10
全部翻譯過來就是1+2+3+4+...+10