【发布时间】:2016-03-20 15:44:19
【问题描述】:
我尝试编写一段代码,接受输入“n”,计算第 n 行数字之和为奇数三角形,如下所示:
1
3 5
7 9 11
13 15 17 19
21 23 25 27 29
等等。所以对于n = 3,总和将是7 + 9 + 11,即27
我知道 n 不仅是行号,还等于该行上的数字数。所以n = 3 上面也有 3 个奇数。因此,我认为我可以得到该行的第一个数字,然后循环将前一个数字加二,然后求和。
我下面的代码不起作用,因此对于n=43 的输入,我的代码计算得出总和是3570,而它实际上等于79507。
public static int rowSumOddNumbers(int n) {
int firstNum = (2 * n) - 1;
int total = 0;
for (int i = 0; i < n; i++) {
total += (firstNum + 2);
}
return total;
}
我相信我的问题是我没有将前一个数字与当前数字 + 2 相加。是不是我需要存储前一个循环的结果而不是将其添加到当前循环的结果中?
任何帮助表示赞赏。
【问题讨论】:
-
是什么让你想出
(2 * n) - 1为firstNum?这显然是错误的。