0x6*_*C74 0 c# console console-application factorial
这个小程序测试了两种计算阶乘的方法 - 迭代和递归.
Factorial.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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
MainProgram.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;
}
Run Code Online (Sandbox Code Playgroud)
安慰:
9727775195120271360
9727775195120271360
根据互联网上最可靠的来源,低数字可以正常,但除此之外(f.ex.与60)它输出的值不正确.你能指出我的错误吗?对我来说,两种完全不同的方法以完全相同的方式工作是不可能的.
您正在遇到C#的ulong数据类型的限制.它是一种64位数据结构,根据MSDN将其限制为最大值18,446,744,073,709,551,615 .
如果你想探索更大的数字,.NET 4引入了你可能感兴趣的BigInteger结构.
| 归档时间: |
|
| 查看次数: |
646 次 |
| 最近记录: |