2013-02-04 31 views
0
Math.floor((1600 * Math.pow(1.4, 19))); // = 956208 

Im做一个球迷网站的游戏和IM试图使计算你需要多少多少法力获得+技能上面的公式从19-20技能计算做取决于值计算x次

但我需要循环计算x次数,以便您可以从x(上面的计算中为19)计算到每次需要提升x + 1,直到它达到最终值y并将每个答案加起来像下面的循环

我有2个文本框,我采取的值从

956208 + 1338692 + 1874168 + 2623836 + 3673371 + 5142719 = 15608994因此它最终会做出类似那样从19到25

回答

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 

您只需从你的较低值,通过循环到你的上限值,每次评估公式并将其添加到每次迭代后继续存在的累积变量。


此外,正如你所知,你正在将微笑浸在微积分中。你得到summation of a finite series.数学是好玩的,即使你不知道你做吧:)

+0

爱是一种新的Stackoverflow奖励形式。 –

+0

你需要让循环'totalMana + = ...'不只是'=' – jzworkman

+0

@jzworkman所以对,我的坏! –

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));}));