作者gn02325403 (gn02325403)
看板java
标题[问题] 递回程式的问题
时间Sat Mar 26 15:27:30 2011
我练习了几个递回程式
其中有个Catalan number 的练习
Catalan number本身递回的定义是
n-1
P(N) = Σ P(k)*P(n-k) n>=3
k=1
P(2)=1 P(1)=1
程式算到P(5)都还是正确的
但P(6)就错误了 当然後面就跟着错
看了很久还是看不出症结所在
因此上来求救
递回部分的程式码如下
public static int matrix(int n)
{
if (n==1 || n==2)
{
return 1;//这是P(1)和P(2)的情况
}
else
{
for(int k = 1;k<=(n-1);k++)
{
ans = (matrix(k) * matrix(n-k))+ans;//递回的部分
}
ans1 = ans;//ans是暂存用 ans1是最後要回传的答案
ans = 0;
return ans1;
}
}
麻烦各位了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.178.19
1F:推 LPH66:请正确的把 ans 初始化... 03/26 16:57
2F:推 lovinalizee:楼上 可以点出来吗??我也找不到耶!谢谢~ 03/26 23:36
3F:→ tkcn:你的公式是不是怪怪的呀..? 03/27 00:00
4F:推 LPH66:to 楼上 他的公式 index off by 1 不过总的来说是对的 03/27 00:22
5F:→ LPH66:to 原PO&二楼 要用回圈连加请在连加前把变数归0... 03/27 00:24