亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

遞歸函數不太理解

  1. 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;
}


正在回答

2 回答

  1. return getWordNumber(n-1)+n,這一句的意思是數學中的f(x)=f(x-1)+x。

  2. 你在1.中的代碼只有一句并不能結束,在原題的例子中,n>1時會自動在factorial(n)中運行factorial(n-1),而factorial(n-1)中又會運行factorial(n-2),直到運行到第k層即函數中不會再運行下一個函數為止(也就是n已經被逐步減到1為止)。

  3. (題主的代碼和例子不一樣我就拿例子來說)主函數中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。即整個函數運行完畢。

  4. 我說的不太明白,希望題主能看懂吧。

7 回復 有任何疑惑可以回復我~
#1

慕瓜0592510 提問者

謝謝啦
2018-11-19 回復 有任何疑惑可以回復我~

茅塞頓開!


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C語言入門
  • 參與學習       926904    人
  • 解答問題       21533    個

C語言入門視頻教程,帶你進入編程世界的必修課-C語言

進入課程

遞歸函數不太理解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號