【发布时间】:2015-07-20 07:36:21
【问题描述】:
我正在使用此代码来计算加泰罗尼亚数。它给了我正确的价值,直到 n=6 ,然后它给了我错误的价值。我使用计算器手动检查。例如:当 n=5 加泰罗尼亚数字是 42 时,这是正确的,但是当 n=7 时,它给了我 6,这是完全错误的,因为答案应该是 429。我只是想不出什么是错的。有人可以帮我吗?
static void Main(string[] args)
{
int i, n, fact, fact1, fact2, CatalanN;
Console.WriteLine("Enter a Number (n>=0)");
n = Convert.ToInt32(Console.ReadLine());
fact = n;
for (i = n - 1; i > 0; i--)
{
fact = fact * i;
}
Console.WriteLine("" + fact);
Console.ReadLine();
fact1 = 2*n;
for (i = 2*n - 1; i > 0; i--)
{
fact1 = fact1 * i;
}
Console.WriteLine("" + fact1);
Console.ReadLine();
fact2 = n+1;
for (i = (n+1)-1; i > 0; i--)
{
fact2 = fact2 * i;
}
Console.WriteLine("" + fact2);
Console.ReadLine();
CatalanN = fact1 / (fact2 * fact);
Console.WriteLine("Catalan Number of the given number is : " + CatalanN);
Console.ReadLine();
}
【问题讨论】:
-
为阶乘等编写一些辅助方法可能是一个很好的练习。
-
非常感谢大家。