1

这个问题也可能是(取决于你如何看待它) - 如何使用 for 循环进行基本的数学运算,将 3 的倍数的总和相加

所以我正在做 Project 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     

(与以前相同的问题:如何将此值添加到数组中?)

第三次迭代:

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) 的最后一个值添加到数组中......那么在 for 循环的每次迭代之后我将如何将 x 的值添加到数组中?而且我没有看到我的 for 循环有什么问题,它将 x 的值返回为 9?

另外,我假设随着我们的进步,欧拉问题变得更加困难?如果是这样,我有大量的工作/实践要做......

提前致谢...

4

3 回答 3

9

只需创建一次数组,然后将每次迭代的结果推送到数组:

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;
}
于 2013-11-06T00:49:08.757 回答
0

您正在声明var x = 0,并且var array = []在循环的每一步,请尝试以下操作:

var array = [], x = 0;
for (i=1; i<4; i++){
  x += (i*3); 
  array.push(x);
}
于 2013-11-06T00:53:59.997 回答
0

您可以像这样使用:并且您必须X在循环外定义

var array = [],
x = 0;
for (i=1; i<4; i++){
  x += (i*3); 
  array.push(x);
}
于 2021-08-05T06:29:39.267 回答