函數(shù) getWordNumber為什么在n-1=1是就不再運(yùn)行了
#include <stdio.h>
/* 定義獲取單詞數(shù)量的函數(shù) */
int getWordNumber(int n)
{? ?
? ? if(n == 1)
? ? {
? ? ? ? return 1;? ? //第一天只會(huì)1個(gè)單詞
? ? }
? ? else{
? ? ? ? return getWordNumber(n-1)+n;? ? ? ?//到第天會(huì)的單詞數(shù)量
? ? }
}
int main()
{
? ? int num = getWordNumber(10);? ? ?//獲取會(huì)了的單詞數(shù)量
? ? printf("小明第10天記了:%d個(gè)單詞。\n", num);
? ? return 0;
}
2019-12-12
首先,return是結(jié)束這個(gè)循環(huán),將值輸入到主函數(shù) ? ? ? ?? (下文中g(shù)etWordNumber用GWN代表)
這個(gè)GWN函數(shù)有兩種結(jié)束循壞的方式,一種是n等于1時(shí),符合If語(yǔ)句的條件,輸出return 1,說(shuō)明停止循壞并且將1這個(gè)值輸入到主函數(shù),然后這里主函數(shù)就會(huì)輸出該值(num=1),一種是n不等于1時(shí),不符合If語(yǔ)句的條件,就會(huì)輸出else語(yǔ)句的return,而這個(gè)return語(yǔ)句后面還有一個(gè)GWN(n-1)的函數(shù),這個(gè)跟著一起被輸入主函數(shù),但此時(shí)這個(gè)循環(huán)并沒(méi)結(jié)束,會(huì)繼續(xù)被自身調(diào)用,這就是遞歸函數(shù),比如,下一個(gè)GWN(9),那么這個(gè)GWN(9)代表在getWordNumber這個(gè)函數(shù)中在n=9的情況下繼續(xù)做循環(huán),最后輸出的是GWN(8)+9+10(備注:這里的10是上一次循環(huán)中GWN(10-1)+10的10),同理,接下來(lái)的GWN(8)也會(huì)繼續(xù)按照這樣循環(huán),最后到GWN(n-1)中的n-1=1時(shí),這時(shí)就符合if語(yǔ)句的條件,就會(huì)輸出return 1,這時(shí)才代表在else return后的這個(gè)GWN(n-1)函數(shù)才完全停止循環(huán),而這時(shí)在主函數(shù)輸出的是num=[GWN(1)=1]+2+3+4+5+6+7+8+9=55
本人也是菜鳥一枚,初次作答,以上是我的個(gè)人的理解,如有不對(duì),還望大神指正。