数学常数 E

问题描述 投票:0回答:1

我正在尝试用 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
功能。

c# integer console-application
1个回答
0
投票

递归意味着它调用自身...

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 的大值,您可能还需要不同的返回类型)

© www.soinside.com 2019 - 2024. All rights reserved.