在c#中在一行中累积总和

本文关键字:一行 | 更新日期: 2023-09-27 17:50:19

是否有可能在一行中完成此操作,以获得累积和等于n的目标?

int n = 0;
for (int i = 1; i <= 10; i++)
{
    n += i;
}

在c#中在一行中累积总和

有一个LINQ扩展方法:

static int SlowSum1ToN(int N)
{
    return Enumerable.Range(1, N).Sum();
}

但是,您也可以在完全不迭代的情况下计算这个特定的值(等差序列的和):

static int FastSum1ToN(int N)
{
    return (N * (1 + N)) / 2;
}

是的,这是可能的,你可以使用Enumerable做到这一点。Range生成一个整数序列,然后调用LINQ扩展方法Sum,如下所示:

int result = Enumerable.Range(1, 10).Sum();

可以替换

int S = 0
for (int i = 0; i <= N; i++)
{
    S += i;
}

int S = (N*(N+1))/2

作为一个附加答案,还有Aggregate函数,它比Sum更通用:

var sum = Enumerable.Range(1, 10).Aggregate(0, (a, b) => a += b);

你也可以这样写

// multiply 1 * 2 * 3 * 4 ...
var product = Enumerable.Range(1, 10).Aggregate(1, (a, b) => a *= b);

一行字有什么魅力?

int n = 0; for (int i = 1; i <= 10; i++) {n += i;}

有更好的方法来计算这个吗?确定。参考其他使用公式的答案