我写了一些代码来计算第 N 个加泰罗尼亚语数。但是,当 N=20 及以后,它不会返回正确的结果。N<20 时的结果是正确的,所以我不确定哪里出了问题。
因此,当 N=20 时,它应该返回 6564120420,但它为我返回 2269153124。
有人可以指出我正确的方向吗?
#include <iostream>
using namespace std;
unsigned long int countTree(unsigned int N)
{
//used to store catalan numbers
unsigned long int catalan[N+1];
//N(0)=N(1)=1
catalan[0]=catalan[1]=1;
int i,j;
for(i=2;i<=N;i++)
{
catalan[i]=0;
for(j=0;j<i;j++)
{
catalan[i]+=catalan[j]*catalan[i-j-1];
}
}
return catalan[N];
}
int main()
{
unsigned int x;
cout<<"Input N:"<<endl;
cin>>x;
unsigned long int result=countTree(x);
cout<<result<<endl;
return 0;
}