Math.floor((1600 * Math.pow(1.4, 19))); // = 956208
我正在做一个游戏的粉丝,并试图计算你需要多少法力来获得+技能上面的公式从19-20技能计算
但是我需要循环计算x次,这样你就可以从x计算(上面的计算中的19)到每次需要提高x + 1,直到它达到最终值y并加上来自的回答每个循环如下
我有两个文本框,我从
中取值956208 + 1338692 + 1874168 + 2623836 + 3673371 + 5142719 = 15608994因此最终会做出19到25之类的事情
答案 0 :(得分: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.数学很有趣,即使你不知道你这样做:)
答案 1 :(得分: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));}));