int n = Convert.ToInt32(Console.ReadLine());
int factorial = 1;
for (int i = 1; i <= n; i++)
{
factorial *= i;
}
Console.WriteLine(factorial);
此代码在控制台应用程序中运行,但当数字大于 34 时,应用程序返回 0。
为什么返回 0 以及如何计算大数的阶乘?
您超出了变量可以存储的范围。这实际上是一个阶乘,其增长速度比指数更快。尝试使用ulong http://msdn.microsoft.com/en-us/library/t98873t4.aspx(最大值 2^64 = 18,446,744,073,709,551,615)而不是 int (最大值 2^31 = 2,147,483,647) -ulong p = 1
- 这应该会让你更进一步。
如果您需要更进一步,.NET 4 及更高版本有BigInteger http://msdn.microsoft.com/en-us/library/system.numerics.biginteger%28v=vs.100%29.aspx,可以存储任意大的数字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)