在C#中累积一行的总和

时间:2011-04-13 17:53:27

标签: c# algorithm

是否可以在一行中执行此操作,目标是使累计和等于n?

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

5 个答案:

答案 0 :(得分:14)

有一个LINQ扩展方法:

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

但是,您也可以计算此特定值(算术序列的总和)without iterating at all

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

答案 1 :(得分:5)

是的,可以使用Enumerable.Range生成一个整数序列,然后调用LINQ扩展方法Sum,如下所示:

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

答案 2 :(得分:5)

您可以替换

int S = 0

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

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

答案 3 :(得分:1)

作为补充答案,还有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);

答案 4 :(得分:0)

对一个衬垫的迷恋是什么?这是:

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

有更好的方法来计算吗?当然。查看使用公式的其他答案。