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