[103關務3等][資訊處理]資料結構第一題 - 考試

Table of Contents

題目是這樣(雖然大家可能都看過了,不過我還是大略抄一遍...)

兩項是係數的組合遞迴演算法如下

C(r,n) =

0, 若 r > n

1, 若 n==r

1, 若 r==0

C(n-1,r)+C(n-1,r-1), 其他

1. 寫出遞迴函數程式

2. 畫出輸入為 n=5, r=3時,遞迴呼叫的二元樹

3. 承2. 求最後回傳值

4. 承2. 共呼叫遞迴幾次

1.
我是用C++寫的

int func(int r, int n)
{
if(r > n)
return 0;
if(n==r)
return 1;
if(r==0)
return 1;
return (func((n - 1), r) + func((n - 1), (r - 1)));
}

2.
(3, 5)
/ \
(4, 3) (4, 2)

===> (4, 3) ===> 4 > 3 ===> 回傳0
===> (4, 2) ===> 4 > 2 ===> 回傳0

3. 0+0 = 0

4.我其實不太確定這叫一次還是兩次,所以我寫2

這樣也有錯嗎?感覺答案太簡單了?




祝各位金榜題名

--

All Comments

James avatarJames2015-05-01
第1個條件要1不是0
Lily avatarLily2015-05-02
第一個回覆是錯的沒看清楚
Andrew avatarAndrew2015-05-06
(4,3)和(4,2)會再遞迴下去不會就傳回0
Dora avatarDora2015-05-07
3.回傳10
Rosalind avatarRosalind2015-05-08
呼叫17次
Belly avatarBelly2015-05-10
算錯是呼叫19次
Margaret avatarMargaret2015-05-13
你把n和r看錯了
Freda avatarFreda2015-05-18
他沒有錯,是題目錯了,所以寫得複雜的人反而錯了...
Quanna avatarQuanna2015-05-20
我也一直覺得是不是題目出錯了=.=...
Bethany avatarBethany2015-05-23
題目是一開始nr寫錯了原po也看錯了,把n當r把r當n
Tristan Cohan avatarTristan Cohan2015-05-26
不知道這題是題目出錯還是故意把n和r對調,也不知道會怎
麼給分
William avatarWilliam2015-05-27
正常給分阿,不要想可以送分這種事答案對就給分不對就是0
Agatha avatarAgatha2015-05-31
條件怎出,就怎寫…改題教授也知清況,免得畫蛇添足。
Sarah avatarSarah2015-06-04
呼叫函數次數,和遞迴呼叫次數是一樣的嗎?困惑中......
Una avatarUna2015-06-04
個人認為呼叫函數19次,但遞迴呼叫18次。請指教。