遞歸函數(shù)不太理解
return getWordNumber(n-1)+n
是否可以理解為數(shù)學中f(n)+f(n+1)
2.這個函數(shù)是如何進行循環(huán)的,控制結(jié)束的是哪一步?
3.是否可以把例題的循環(huán)過程用文字講一下
#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; }
2018-11-17
return getWordNumber(n-1)+n,這一句的意思是數(shù)學中的f(x)=f(x-1)+x。
你在1.中的代碼只有一句并不能結(jié)束,在原題的例子中,n>1時會自動在factorial(n)中運行factorial(n-1),而factorial(n-1)中又會運行factorial(n-2),直到運行到第k層即函數(shù)中不會再運行下一個函數(shù)為止(也就是n已經(jīng)被逐步減到1為止)。
(題主的代碼和例子不一樣我就拿例子來說)主函數(shù)中n=5,factorial(n)函數(shù)執(zhí)行“else”語句,執(zhí)行else語句時包含factorial(n-1)即factorial(4).factorial(4)還是執(zhí)行else語句,其中包含factorial(3)就這樣一層一層執(zhí)行直到執(zhí)行factorial(1).factorial(1)執(zhí)行不再執(zhí)行else語句而是else if語句,不再調(diào)用factorial()這個函數(shù),便不再循環(huán)。之后結(jié)束factorial()中的if進入return。即整個函數(shù)運行完畢。
我說的不太明白,希望題主能看懂吧。
2019-08-12
茅塞頓開!