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