是否可以在一行中执行此操作,目标是使累计和等于n?
int n = 0;
for (int i = 1; i <= 10; i++)
{
n += i;
}
答案 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;}
有更好的方法来计算吗?当然。查看使用公式的其他答案。