这个小程序测试了计算阶乘的两种方法——通过迭代和递归。
阶乘.cs:
using System;
namespace Functions
{
public class Factorial
{
public static ulong CalcRecursively(int number)
{
if (number > 1)
return (ulong)number * CalcRecursively(number - 1);
if (number <= 1)
return 1;
return 0;
}
public static ulong Calc(int number)
{
ulong rValue=1;
for (int i = 0; i < number; i++)
{
rValue = rValue * (ulong)(number - i);
}
return rValue;
}
}
}
主程序.cs:
using System;
using Functions;
class FunctionClient
{
public static void Main()
{
Console.WriteLine("{0}\n", Functions.Factorial.CalcRecursively(TESTED_VALUE));
Console.WriteLine("{0}\n", Functions.Factorial.Calc(TESTED_VALUE));
Console.ReadKey();
}
const int TESTED_VALUE = 60;
}
安慰:
9727775195120271360
9727775195120271360
根据互联网上最可靠的来源,可以使用低数字,但否则(例如 60)它会输出不正确的值。你能指出我的错误吗?对我来说,这两种完全不同的方法以完全相同的方式出错,这让我难以置信。