我使用此代码来计算加泰罗尼亚号码。它给了我正确的价值,直到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();
}
http://rosettacode.org/wiki/Catalan_numbers#C.23 –
为factorial等编写一些辅助方法可能是一个很好的练习。 –
非常感谢大家。 – haby