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

我在做一个游戏的粉丝网站,我试图计算你需要多少法力+技能上面的公式从 19-20 技能计算

但我需要循环计算 x 次数,这样你就可以从 x (上面计算中的 19)计算到 y 需要每次提高 x+1 直到它达到最终值 y 并将每个循环的答案加起来,比如以下

我有 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 回答