Javascript循环添加相同的值

时间:2016-03-03 15:03:37

标签: javascript loops

我希望你们能帮助我!

我正在尝试以下方法:

1000 + 100 = 1100 * 2 = 2200;
2200 + 100 = 2300 * 2 = 4600;
4600 + 100 = 4700 * 2 = 9400;
9400 + 100 = 9500 * 2 = 19000;
...

但是我得到了流畅的结果。

1000 + 100 = 1100 * 2 = 2200;
2200 * 2 = 4400
4400 * 2 = 8800
... 

这些值是由用户输入的,但我在示例中使用了静态值。

我有以下代码:

var generate = function generate(rate){
    var array = [];
    s=0;
    for (var i = 0; i < 10; i++){
        s =+ 100;
        array.push([
            (parseInt(1000) + 100) * Math.pow(2, i),
        ]); 
    }
    return array;
}

4 个答案:

答案 0 :(得分:1)

听起来像你想要一个增加100,双精度然后以递归方式调用自身固定次数的函数。

此功能将运行10次并输出最终答案:

function add100andDouble(num, runTimes){
  if(runTimes == 0) return num;
  return add100andDouble( (num + 100 ) * 2, runTimes - 1 );
}

$(function(){
  var number = parseFloat(prompt("Enter a number"));
  alert( add100andDouble(number, 10) );
});

答案 1 :(得分:1)

&#13;
&#13;
var generate = function generate(rate){
    var array = [];
    s=0;
    for (var i = 0; i < 10; i++){
        s = rate + (array[i-1] ? array[i-1] :1000);
        array.push(s*2); 
    }
    return array;
}
console.log(generate(100));
&#13;
&#13;
&#13;

答案 2 :(得分:1)

我建议使用函数f(x)来计算新值。它使代码更清晰。

&#13;
&#13;
function f(x) {
    return (x + 100) * 2;
}

var i = 0,
    x = 1000,
    array = [];

for (i = 0; i < 10; i++) {
    array.push(x);
    x = f(x);
}
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 3 :(得分:0)

递归在其他解决方案上有其优点,但我会采用普通的for循环来解决这种情况。

假设rate是起始编号,并且返回是固定的10个值系列:

function generate(rate) {
    var series = [];
    for(var i = 0; i < 10; i++) { 
      series.push(rate = ((rate + 100) * 2));
    };
    return series;
}

如果需要,可以很容易地修改它以发送系列长度。