2016-03-03 30 views
2

我希望你們能幫助我!Javascript Loop增加相同的值

我想以下幾點:

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 
... 

這些值由用戶輸入,但我使用了該示例的靜態值。

我已經TE下面的代碼:

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

'parseInt(1000)'與'1000'完全相同。不需要調用'parseInt()'。另外,它是'+ =',而不是'= +'。 *編輯*哦,等等我看,'1000'是一個「示例的靜態值」。很公平。 – Pointy

+0

你能更清楚地描述你的輸入和預期輸出嗎?你期望一系列數字還是隻有一個數字? – Halcyon

+0

您正在使用'Math.pow(2,i)',但您發佈的示例公式中沒有提及任何有關指數的內容。 – Pointy

回答

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

+0

這需要jQuery。 – Phylogenesis

+0

這個答案的哪些部分需要jQuery? –

+1

'$(function(){...})包裝器。 – Phylogenesis

1

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

1

我建議使用功能f(x)計算的新值。它使代碼更清晰地排列。

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

0

遞歸有上其他解決方案的優點,但我會用普通的舊去循環的這種情況。

假設rate是起始號碼,並且返回的是一個固定的10值系列:

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

它可以很容易地修改,如果需要發送的系列長度。