将-6到38之间的所有奇数存储到一个数组中

时间:2015-09-11 17:42:56

标签: java equation

我正在做一些Java练习,这就是其中之一。我这样做了:

int odds[] = new int[22];

int storedNo = -5;

for (int i = 0; i < odds.length; i++) {
    odds[i] = storedNo;
    storedNo += 2;
}

哪个有效。但是,我看了答案,它说要做到这一点:

int[] odds = new int[22];

for (int i = 0; i < 22; i++) {
    odds[i] = i * 2 - 5;
}

我的问题是,他们是如何得出答案的?,特别是i * 2 - 5部分?我不知道如何考虑数学来得到答案。

2 个答案:

答案 0 :(得分:2)

考虑它的一个简单方法是它为整数值y = 2x - 5计算等式x in [0, 21]

enter image description here

他们是如何得出这个解决方案的?一种方法是查看第一个和最后一个点。我们知道第一个奇数是x = 0y = -5,最后一个是x = 21y = 37。两个点足以求解线性方程y = mx + b

从第一点开始

(-5) = m(0) + b
=> b = -5

从第二点开始我们

(37) = m(21) + b
=> 37 = 21m - 5
=> 21m = 42
=> m = 2

因此我们的解决方案是y = 2x - 5。这也遵循直观的观察,即连续的奇数具有2的差异,并且该线的y截距应该是最小的数字。

答案 1 :(得分:0)

只需按照数学计算即可了解其工作原理。你得到的第一个奇数是-5,所以当你的循环变量为0时,i * 2 - 5会给你-5开始。当我在每次循环迭代中增加1时,你将会有一个结果是“2”比前一个更大。

0 * 2 - 5 = -5

1 * 2 - 5 = -3

2 * 2 - 5 = -1

...

21 * 2 -5 = 37