在c#中在一行中累积总和
本文关键字:一行 | 更新日期: 2023-09-27 17:50:19
是否有可能在一行中完成此操作,以获得累积和等于n的目标?
int n = 0;
for (int i = 1; i <= 10; i++)
{
n += i;
}
有一个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;}
有更好的方法来计算这个吗?确定。参考其他使用公式的答案