我正在尝试用 C# 编写求解 e 的公式。
e = 1 + (1 / 1!) + (1 / 2!) + (1 / 3!) + ...
我编写这段代码是为了解决“n!”的问题小数。
//n! = n * (n - 1)*(n - 2)*...* 1
//5! = 5 * (5 - 1)*(5 - 2)*(5 - 3)*(5 - 4)*(5 - 5)
//5! = 5 * 4 * 3 * 2 * 1 * 0
//5! = 120
int num = A;
while (num > 0)
{
A = num;
for (int i = A - 1; i > 0; i--)
{
A *= i;
}
Console.WriteLine($"Fractorial of {A}! = {num}\n");
num--;
}
随着n!发现变量:我对如何将其实现到 e = 1 + (1/n!) + (1/n!++)
感到困惑此答案不使用
System.Math.E
功能。
递归意味着它调用自身...
public int factorial(int upperLimit) {
if(upperLimit >= 3) {
return upperLimit * factorial(upperLimit - 1);
}
else {
return upperLimit;
}
}
此函数会调用自身,直到参数达到 3。您使用 3 因为 1!是 1 乘以 1 = 原始值,因此不需要此迭代。 2!是 2,但仍需要将原来乘以 2 才能得到正确答案。
如果你按逻辑推导,当 upperLimit 为 5 时,会发生以下情况: 使用 upperLimit 5 调用阶乘 - 原始 使用 upperLimit 4 调用阶乘 使用 upperLimit 3 调用阶乘 使用 upperLimit 2 调用阶乘 返回2 返回 32 返回 4(32) 返回 5(4*(3*2))
4 次呼叫,4 次返回。
从这里您应该能够看到如何将此函数修改为根据其他公式获取“e”的函数。 注意:您需要更改返回类型,因为 'e' 不是 int (对于 upperLimit 的大值,您可能还需要不同的返回类型)