这个问题也可能是(取决于你如何看待它) - 如何使用for循环来做一个基本的数学运算,它将3的倍数加起来
所以我正在做Euler项目的问题1。
我(已经)撞到了钢筋墙。我可以使用一些帮助 - 只需要问题的一个特定部分(我不是只找到问题的答案,而是找到我的具体问题的答案,所以我可以继续试图解决剩余问题使用你们在这里给我的任何答案)...
反正。
我(我想)我创建了一个for循环,它将给出3的倍数。但是,我试图存储for循环的每次迭代的结果,以便它加起来为这些倍数的总和即我试图存储循环的每次迭代的结果 - 无论是进入数组还是进入一个取多次数之和的变量 - 这对我来说无关紧要 - 我不介意学习这两种方法
我确信这听起来有些令人困惑,所以让我用一个例子画出我的照片......
我有一个for循环:
for (i = 1; i <= 3; i++) {
var x = 0;
x += (i * 3);
WHAT DO I DO NEXT????
^所以我认为这给了我在循环的第一次迭代时x值为3,在第二次循环中x值为9,在最后一个循环中x值为18。那是对的,对吗? (如果返回18,我认为我不需要将每次迭代的值存储到数组中)
第一次迭代:
i = 1; x = 0
原始等式......
(i * 3) + x
因此...
(1 * 3) + (x = 0) = 3
所以在完成第一个循环后,x的值为3,对吧??? (问题:如何存储x的这个值(即3) - 在for循环的这个阶段,如何将它存储在数组中?)
循环的第二次迭代:
i = 2; x = 3
(2 * 3) + (x = 3) = 9
(和以前一样的问题:如何将这个值添加到数组中?)
第3次迭代:
i = 3; x = 9
(3 * 3) + (x = 9) = 18
问:完成for循环后,这不应该是x的最终值吗?出于某种原因,当我运行代码时,x的最终值是9,而不是18
所以,基本上我正在尝试添加3个值的总和......但接下来我该怎么做?我认为我的for循环会在每个循环之后将方程的结果添加到x,但不是以w / 18结尾(3 + 6 + 9
的总和),x的值是9 ???
我应该使用数组吗?如果是这样,我想我可以将返回值添加到数组中,但我不确定如何将循环的每次迭代的结果添加到数组中。也许以下几点?...
for (i = 1; i <= 3; i++) {
var array = [];
x = 0;
x += (i *3);
array.push(x);
};
^我尝试在jfiddle中运行它,但它只会将x(9)的最后一个值添加到数组中......那么在每次迭代之后我如何将x的值添加到数组中for loop ???而且我没有看到我的for循环到它返回x值为9的地方有什么问题?
另外,我假设随着我们的进步,欧拉问题变得更加困难?如果是这样的话,我有很多工作/实践要做....
感谢提前......
答案 0 :(得分:5)
只需创建一次数组,并在每次迭代时将结果推送到数组:
var array = [];
for (i = 1; i <= 3; i++) {
var x = 0;
x += (i *3);
array.push(x);
}
或者就此而言,只需使用:
var array = [];
for (i = 1; i <= 3; i++) {
array.push(i *3);
}
或者只是得到因子的总和,请使用:
var x = 0;
for (i = 1; i <= 3; i++) {
x += i *3;
}
答案 1 :(得分:0)
您在循环的每一步声明var x = 0
和var array = []
,请尝试以下操作:
var array = [], x = 0;
for (i=1; i<4; i++){
x += (i*3);
array.push(x);
}
答案 2 :(得分:0)
你可以这样使用:
并且你必须在循环之外定义 X
var array = [],
x = 0;
for (i=1; i<4; i++){
x += (i*3);
array.push(x);
}