我希望你们能帮助我!
我正在尝试以下方法:
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;
}
答案 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)
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;
答案 2 :(得分: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>');
&#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;
}
如果需要,可以很容易地修改它以发送系列长度。