我有一个起始数字,因此必须仅在开始循环时将该数字乘以一个因子,然后将结果乘以另一个因子的 X 倍,然后必须将循环乘以 Y 次,最后我需要总金额...我认为最好查看数字来了解我需要什么
例如,如果我从数字 10 开始,这是正确的顺序:
- 10
- 50 (10*5)
- 60 (50*1.2)
- 72 (60*1.2)
- 86.4 (72*1.2)
- 103.68 (86.4*1.2)
- 124.416 (103.68*1.2)
对我来说,从现在开始,前 6 个是内部循环,我需要复制该过程,但我必须使用最后一个值,124.416 乘以 5,然后再次乘以 1.2,所以
- 622.08 (124.416*5)
- 746.496 (622.08*1.2)
- 895.7952 (746.496*1.2)
- 1074.95424 (895.7952*1.2)
- 1289.94509 (1074.95424*1.2)
- 1547.93411 (1289.94509*1.2)
- 1857.52093 (1547.93411*1.2)
等等...
最后我需要将所有中间结果相加,10 + 50 + 60 + 72 ...
我尝试这样做,但这不是我需要的,内部循环的工作方式就像暴露的一样,但是当我添加外部循环时,一切都出了问题!
outtercycle = 5;
base = 10;
mult1 = 5;
mult2 = 1.2;
innercycle = 6;
aaa = 0;
number = 0;
function test()
{
for (j = 0; j < outtercycle; j++) {
aaa = base * mult1;
number += aaa;
for (i = 0; i < (innercycle - 1); i++) {
aaa *= mult2;
number += aaa;
}
}
return number + base;
}
base = test();
在代码中,我需要有 5 个外部循环,但我只在 2 个外部循环上进行测试,我认为,当它起作用时,可以处理任何变量值,对吗?
对这个小问题有什么想法吗?
最佳答案
将其分为两个步骤 - 更容易解决问题。
- 累加数组中的所有值
- 对数组中的所有数字求和
function getValues(start, outerCycle, outerMulti, innerCycle, innerMulti){
var result = [start];
var idx = 0;
for(var i = 0;i<outerCycle;i++){
result.push(result[idx] * outerMulti);
idx++;
for(var j=0;j<innerCycle;j++){
result.push(result[idx] * innerMulti);
idx++;
}
}
return result;
}
var values = getValues(10,2,5,5,1.2);
console.log('values', values);
var sum = values.reduce(function(a,b){ return a + b; });
console.log('sum', sum);
关于JavaScript 数学,循环内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613971/