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