Re: [理工] [資結]binomial coefficient遞迴的小疑問

作者: outofyou   2017-04-19 15:21:55
※ 引述《shownlin (哈哈阿喔)》之銘言:
: 一個小問題
: 因為大部分的答案好像都這樣寫
: int binomialCoeff(int n, int k)
: {
: // Base Cases
: if (k==0 || k==n)
: return 1;
: return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
: }
: 想請問是不是資料結構中的答案都不用考慮結果為0的initial conditions?
上一篇我的推文狂打自己臉....
(n,k) k = 3 k = 2
n = -4 =-1*(7-1,3)=-20 10
↑ ↗
-3 -10 6
↑ ↗
-2 -4 3
↑ ↗
-1 -1 1
↑ ↗
0 0 (n==0) 0 (n==0)
↑ ↗
1 0 0
↑ ↗
2 0 1 (n==k)
↑ ↗
3 1 (n==k) 3
↑ ↗
4 4 6
↑ ↗
5 10 10
紅色字(n==k)以上是n<k的範圍,所以在使用這個遞迴式的情況下,
當n<0,k非定值時,找不到情況"用n與k的關係判斷 return 一個常數"。
//Base Cases
if (k==0)
return 1;
else if(n==0)
return 0;
else if (n>0)
return binomialCoeff(n-1, k-1) + binomialCoeff(n-1, k);
else if (n<0)
return -1 * (binomialCoeff(k-n-1,k));
不過我覺得一般寫原PO的範例答案加說明輸入限制應該也可以吧。(希望不要扣我的分)
作者: shownlin (哈哈阿喔)   2017-04-20 00:48:00
謝謝,知道怎麼做了
作者: outofyou   2017-04-20 11:58:00
又有錯...最後一行,應該要判斷k是奇數還是偶數決定正負臉都腫了

Links booklink

Contact Us: admin [ a t ] ucptt.com