c#:在循环内计算

时间:2017-11-05 10:54:56

标签: c# loops calculation

我必须按以下顺序乘以数字:    (1,3 * 5,5 * 7 * 9,7 * 9 * 11 * 13,......)直到它达到11个值并且我已经使用了这个代码:

for (int t = 1; t <= 11; t++)
{
    for (int i = (2 * t) - 1; i <= (4 * t) - 3; i = i + 2) {
        result = result * i; 
    } 

}
Console.WriteLine(result);

但每次循环时,它也会与之前的结果相乘。 (例如:1,15,4725,42567525,...) 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

只需在每个步骤后重置结果:

for (int t = 1; t <= 11; t++)
{
    result = 1;
    for (int i = (2 * t) - 1; i <= (4 * t) - 3; i = i + 2) {
        result = result * i; 
    } 
    Console.WriteLine(result);
}

更新:这是一个有效的示例,只需点击运行:https://repl.it/Nlab/1 请注意,我将结果初始化为double,因为对于简单整数,数字变得很大。

答案 1 :(得分:0)

您的printline必须位于第一个 for 循环中。目前它工作得很好,但问题是你没有在合适的时间打印它

您的代码应为:

    int result = 1;
    for (int t = 1; t <= 11; t++)
    {
        for (int i = (2 * t) - 1; i <= (4 * t) - 3; i = i + 2)
        {
            result = result * i; 
        }
        Console.WriteLine(result);
    }

但我建议您在溢出的情况下使用 Int64 而不是 int

答案 2 :(得分:0)

试试这个:

var numbers =
    Enumerable
        .Range(1, 11)
        .Select(n =>
            Enumerable
                .Range(0, n)
                .Select(x => ((long)n + (long)x - 1L) * 2L + 1L)
                .Aggregate((x0, x1) => x0 * x1));

Console.WriteLine(String.Join(Environment.NewLine, numbers));

这让我:

1
15
315
9009
328185
14549535
760543875
45808142625
3124115327025
237984079323375
20028239096740875