c#:循环内的计算

c#: Calculation inside a loop

我必须按以下顺序乘以数字: ( 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...) 我该如何解决这个问题?

只需在每一步后重置结果:

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 请注意,我将 result 初始化为 double 因为数字对于简单整数来说变得很大。

您的打印行必须在第一个 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 以防 overflow .

试试这个:

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