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