在C#中累积一行的总和

Mor*_*ker 7 c# algorithm

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

int n = 0;
for (int i = 1; i <= 10; i++)
{
    n += i;
}
Run Code Online (Sandbox Code Playgroud)

Dan*_*Tao 14

有一个LINQ扩展方法:

static int SlowSum1ToN(int N)
{
    return Enumerable.Range(1, N).Sum();
}
Run Code Online (Sandbox Code Playgroud)

但是,您也可以在不进行迭代的情况下计算此特定值(算术序列的总和):

static int FastSum1ToN(int N)
{
    return (N * (1 + N)) / 2;
}
Run Code Online (Sandbox Code Playgroud)

  • 哈哈,哎呀.不知怎的,我有一种感觉,我会犯这样的错误.我认为不应该对TDD进行单元测试,而应该在SO上发布代码; 你可以通过这种方式获得更快的反馈;) (3认同)

Hom*_*mam 5

是的,它是可能的,你可以做到这一点使用Enumerable.Range产生整数序列,然后调用LINQ扩展方法总和为以下几点:

int result = Enumerable.Range(1, 10).Sum();
Run Code Online (Sandbox Code Playgroud)


use*_*0.1 5

你可以替换

int S = 0

for (int i = 0; i <= N; i++)
{
    S += i;
}
Run Code Online (Sandbox Code Playgroud)

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

  • @Waqas:你是什么意思?不是一行吗?你在谈论集会吗? (6认同)