第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

遞歸函數(shù)(一)

#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;

}

遞歸函數(shù),是碰到什么條件停止循環(huán)的?到最后為什么不是getWordNumber(1-1)+1?


正在回答

2 回答

因為getWorldNumber的值已經(jīng)確定了是1,所以就不會再繼續(xù)執(zhí)行g(shù)etWorldNumber(n-1)+n了。

在主方法main中調(diào)用了getWordNumber方法,當(dāng)函數(shù)走到int num = getWordNumber(10)時又會返回去調(diào)用getwordNumber方法;反復(fù)執(zhí)行直到滿足遞歸函數(shù)終結(jié)條件停止;

遞歸函數(shù)的執(zhí)行過程:執(zhí)行時遇到getWordNumber(10),保存當(dāng)前的n(n-1)+n以及getWordNumber(10)執(zhí)行完后的返回地址;然后繼續(xù)執(zhí)行,繼續(xù)對局部變量和函數(shù)返回地址入棧保存。直到遇到遞歸結(jié)束條件,開始彈棧,這是將棧頂n域值恢復(fù)給n,棧頂?shù)刂酚蜃鳛榉祷氐刂烦鰲?,繼續(xù)這樣下去,直到???/p>


2 回復(fù) 有任何疑惑可以回復(fù)我~
#1

那誰很靠譜3587144 提問者

多謝,我先去查查什么是棧,回來要是能看明白,一定會采納的
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#2

JustWannaHugU 回復(fù) 那誰很靠譜3587144 提問者

好的。 棧就是一個后進(jìn)先出的容器而已
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#3

那誰很靠譜3587144 提問者 回復(fù) JustWannaHugU

if(n == 1) { return 1; //第一天只會1個單詞 } 當(dāng)n==1的時候,return 1(輸出1),可是為什么最后輸出的是return getWordNumber(n-1)+n這個呢?
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#4

JustWannaHugU 回復(fù) 那誰很靠譜3587144 提問者

?你說明白點(diǎn)
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#5

JustWannaHugU 回復(fù) 那誰很靠譜3587144 提問者

第一次調(diào)用時n=10,就會return getWordNumber(n-1)+n,也就是getWordNumber(10-1)+10; 而getWordNumber(10-1)返回的是getWordNumber(9-1)+9; ...一直往下減 getWordNumber(2)返回getWordNumber(2-1)+2; 但是到了這時候就會出現(xiàn) getWordNumber(1)返回1; 于是開始逐層往上return值了(因為從一開始就沒有計算完畢) getWordNumber(10)=getWordNumber(1)+2+3+4+5+6+7+8+9+10=55.至此程序執(zhí)行完畢
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#6

那誰很靠譜3587144 提問者 回復(fù) JustWannaHugU

這個真是挺難理解,感覺比原來的課加一塊都難理解,我去度娘視頻看看是不是好理解一些,謝謝大神先
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
#7

那誰很靠譜3587144 提問者

非常感謝!
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~
查看4條回復(fù)

回復(fù) JustWannaHugU:#include <stdio.h>

/* 定義獲取單詞數(shù)量的函數(shù) */

int getWordNumber(int n)

{ ??

? ? if(n == 1)//那么,最后為什么不是直接輸出這個呢?如果這個不成立,不是才執(zhí)行下面的else嗎?

? ? {

? ? ? ? return 1; ? ?

? ? }

? ? else

? ? {

? ? ? ? return getWordNumber(n-1)+n ; //這里一直最后會成(1-1)+1對嗎???? ? ? ?

? ? }

}

int main()

{

? ? int num = getWordNumber(10); ? ? //獲取會了的單詞數(shù)量

? ? printf("小明第10天記了:%d個單詞。\n", num);

? ? return 0;

}


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

JustWannaHugU

你再好好看看遞歸吧,在紙上寫寫
2016-10-24 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
C語言入門
  • 參與學(xué)習(xí)       926892    人
  • 解答問題       21419    個

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

進(jìn)入課程

遞歸函數(shù)(一)

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號