使用组合的第 n 个加泰罗尼亚数字
nth Catalan number using Combinations
我已经编写了一个 c++ 程序来使用组合查找第 n 个加泰罗尼亚数字,但我总是得到输出 0。请指出此代码中的错误:
#include <iostream>
using namespace std;
int fact(unsigned int x)
{
unsigned long long f = 1;
for (int i = 1; i <= x; i++)
{
f = f*i;
}
return f;
}
int comb(int y, int z)
{
unsigned long long int c;
c = fact(y) / (fact(z)*fact(y - z));
return c;
}
int catalan(int b)
{
unsigned long long int a;
a = (1 / (b + 1))*(comb((2 * b), b));
return a;
}
int main()
{
int n;
cout << "enter value of n for nth catalan number=";
cin >> n;
cout << n << " Catalan number=" << catalan(n) << endl;
return 0;
}
(1 / (b + 1))
始终为零。而是使用
a = comb(2 * b, b) / (b + 1);
此外,您使用 unsigned long long 进行计算。为什么不将其用作 return 类型而不是 int.
我已经编写了一个 c++ 程序来使用组合查找第 n 个加泰罗尼亚数字,但我总是得到输出 0。请指出此代码中的错误:
#include <iostream>
using namespace std;
int fact(unsigned int x)
{
unsigned long long f = 1;
for (int i = 1; i <= x; i++)
{
f = f*i;
}
return f;
}
int comb(int y, int z)
{
unsigned long long int c;
c = fact(y) / (fact(z)*fact(y - z));
return c;
}
int catalan(int b)
{
unsigned long long int a;
a = (1 / (b + 1))*(comb((2 * b), b));
return a;
}
int main()
{
int n;
cout << "enter value of n for nth catalan number=";
cin >> n;
cout << n << " Catalan number=" << catalan(n) << endl;
return 0;
}
(1 / (b + 1))
始终为零。而是使用
a = comb(2 * b, b) / (b + 1);
此外,您使用 unsigned long long 进行计算。为什么不将其用作 return 类型而不是 int.