0
Math.floor((1600 * Math.pow(1.4, 19)));  // = 956208

ゲームのファンサイトをやっていて、取得する必要のあるマナの量とスキルを計算しようとしています。上記の式は19〜20スキルから計算します。

しかし、x(上記の計算では19)からyまで計算できるように、計算をx回ループする必要があります。最終値yに達するまで、毎回x + 1を上げて、次のように各ループからの回答を合計する必要があります。下

値を取得するテキストボックスが2つあります

956208 + 1338692 + 1874168 + 2623836 + 3673371 + 5142719 = 15608994なので、19から25のようなことをすることになります

4

2 に答える 2

2

問題を正しく理解している場合 (少し不明確です...)、このようなものが必要です。

var from = 19;
var to   = 25;
var totalMana = 0;

for (var i = from; i <= to; i++) {
  totalMana += Math.floor(1600 * Math.pow(1.4, i));
}

console.log(totalMana); // 22,808,801

低い値から高い値まで単純にループし、式を毎回評価して、反復ごとに持続する累積変数に追加します。


また、ご存知のように、あなたはつま先を微積分に浸しています。有限級数の合計を取得しています。数学は楽しいです。

于 2013-02-04T20:41:59.430 に答える
0

楽しみのためにこの答えを投げ込みます:

// generate an array with each value in the series, where callback evaluates
// the value at each step
Math.series = function(from, to, callback){
    var out = [];
    for (var i = from; i <= to; i++)
        out.push(callback.call(null, i));

    return out;
};

// add the things in an array.
Math.sum = function(arr){
    var sum = 0; 
    for (var i = 0; i < arr.length; i++)
        sum += +arr[i];

    return sum;
};

これらのユーティリティ関数を使用すると、次のようにワンライナーでタスクを実行できます。

Math.sum(Math.series(19,25,function(i){return Math.floor(1600*Math.pow(1.4,i));}));
于 2013-02-04T21:09:50.447 に答える