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