dvr
dvr

Reputation: 21

Javascript Loop with adding same value

I hope you guys can help me!

I'm trying the following:

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

But I'm getting the flowing result.

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

The values are inputed by the user, but I used static values for the example.

I have te following code:

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

Upvotes: 2

Views: 302

Answers (4)

Raul Ortiz
Raul Ortiz

Reputation: 1

Recursion has its merits on other solutions but I would go with plain old for loop for this situation.

Assuming rate is the starting number, and the return is a fixed 10 value series:

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

It can be easily modified to send the series length if needed.

Upvotes: 0

Nina Scholz
Nina Scholz

Reputation: 386530

I suggest to use a function f(x) for calculating the new value. It makes the code more clearly arranged.

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

Upvotes: 1

Vladu Ionut
Vladu Ionut

Reputation: 8183

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

Upvotes: 1

Dustin Poissant
Dustin Poissant

Reputation: 3418

Sounds to me like you want a function that adds 100, doubles and then calls itself recursively a fixed number of times.

This function will run 10 times and output the final answer:

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

Upvotes: 1

Related Questions