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
我必须按以下顺序乘以数字: ( 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