C# c语言中的概率计算器#

C# c语言中的概率计算器#,c#,calculator,probability,C#,Calculator,Probability,我有一个编程问题 我一直在尝试做一些类似于c#中概率计算器的事情,为此我需要某种类型的阶乘。我知道如何编程阶乘,但我需要 从零到某个给定数的所有阶乘之和 假设输入的数字是某个常数r,我想要的是: 0! + 1! +2! + ... + (r-1)! + r! 到目前为止,这是我得到的,但仍然不起作用: double a, j, k = 1, sum = 1, l = 1; for (a = 1; a <= f; a ++) { for (j = 1; j <= a; j+

我有一个编程问题

我一直在尝试做一些类似于c#中概率计算器的事情,为此我需要某种类型的阶乘。我知道如何编程阶乘,但我需要

从零到某个给定数的所有阶乘之和

假设输入的数字是某个常数
r
,我想要的是:

0! + 1! +2! + ... + (r-1)! + r!
到目前为止,这是我得到的,但仍然不起作用:

double a, j, k = 1, sum = 1, l = 1;

for (a = 1; a <= f; a ++)
{
    for (j = 1; j <= a; j++)
    {
        l = k * j;
    }

    sum = sum + l;
}

Console.WriteLine(sum);
双a,j,k=1,和=1,l=1;

对于(a=1;a一个简单的
for
循环就足够了。既然
factorial
增长很快,让我们使用
biginger
type; 但是,如果需要,可以将所有
biginger
更改为
double

using System.Numerics;

...

// 0! + 1! + 2! + ... + value!
public static BigInteger MyFunc(int value) {
  if (value < 0)
    throw new ArgumentOutOfRangeException(nameof(value));

  BigInteger result = 1;
  BigInteger factorial = 1;

  for (int i = 1; i <= value; ++i) 
    result += (factorial *= i);

  return result;
}
结果:

using System.Linq;

...

int[] tests = new int[] {
  0, 1, 2, 3, 4, 5, 6, 7
};

string report = string.Join(Environment.NewLine, 
  tests.Select(x => $"{x} => {MyFunc(x),4}"));

Console.WriteLine(report);
0 =>    1
1 =>    2
2 =>    4
3 =>   10
4 =>   34
5 =>  154
6 =>  874
7 => 5914

阶乘计算在哪里?
k
始终为1,因此在循环结束时
l
仅等于
a
。将代码拆分为函数,确保
factorial
函数工作,然后再尝试将其用于其他计算。我不认为您的代码仅仅基于某个因子就达到了预期效果就像k=1。你将k乘以j,但是k从1变为1。f是不存在的。这需要一些代码,在你准备好请求帮助解决手头的问题之前。