1

この質問は次のようにもなります (見方によっては) - for ループを使用して、3 の倍数の合計を合計する基本的な数学演算を実行する方法

そこで、Project Euler の問題 1 を実行しています。

私は(すでに)鋼鉄で補強された壁にぶつかりました。私はいくつかの助けを借りることができます-問題の特定の部分だけでお願いします(私は問題に対する答えだけを探しているのではなく、特定の問題に対する答えを探しているので、残りの問題を解決しようと続けることができます皆さんがここで私に提供するすべての答え)...

いずれかの方法。

私は (私が思うに) 3 の倍数を与える for ループを作成しました。ただし、for ループの各反復の結果を格納して、これらの倍数の合計になるようにしようとしています。ループの各反復からの結果を格納しようとしています-それが配列であろうと倍数の合計を取る変数であろうと-それは私には関係ありません-私は両方の方法を学ぶことを気にしません.

これはちょっと混乱するように聞こえると思いますので、例を使って私の絵を描いてみましょう...

forループがあります:

for (i = 1; i <= 3; i++) {
var x = 0;
x += (i * 3);
WHAT DO I DO NEXT????

^ したがって、これにより、ループの最初の繰り返しで x の値が 3 になり、2 回目のループで x の値が 9 になり、最後のループで x の値が 18 になると思います。そうですよね?(これが 18 を返す場合、各反復の値を配列に格納する必要はないと思います)

1 回目の反復:

i = 1; x = 0

元の方程式...

(i * 3) + x            

そう...

(1 * 3) + (x = 0) = 3

1回目のループが終わったら、xの値は3ですよね???(質問: この x の値 (3) をどのように格納しますか? for ループのこの段階で、どのように配列に格納しますか?)

ループの 2 回目の反復:

i = 2; x = 3

(2 * 3) + (x = 3) = 9     

(前と同じ質問: この値を配列に追加するにはどうすればよいですか?)

3 回目の反復:

i = 3; x = 9

(3 * 3) + (x = 9) = 18      

Q: これは、for ループの完了時の x の最終値であってはなりませんか? 何らかの理由で、コードを実行すると、x の最終値は 18 ではなく 9 になります。

だから、基本的に私は 3 つの値の合計を追加しようとしています.しかし、私は次に何をすればよいですか? for ループは、各ループの後に方程式の結果を x に追加すると思っていましたが、最終的に 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

配列を 1 回だけ作成し、反復ごとに結果を配列にプッシュします。

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 に答える