我认为我的问题可能是我的 i 值和 start 的值相同...所以我的循环停止得太早了。为了解决该问题,我尝试将“ while(i function triple_sequence(start, length) {
var res = [start];
var i = start;
while (i < length) {
i *= 3;
res.push(i);
i++;
}
return res;
}
console.log(triple_sequence(2, 4));
//[2, 6, 18, 54]
答案 0 :(得分:1)
您正在检查i
,而不是结果的长度。更改
while (i < length)
到
while (res.length < length)
此外,请勿将i++
放入循环中。您已经用i
更新i *= 3;
。
答案 1 :(得分:1)
使用索引变量i
并将其用作数组的值会使您感到困惑。
您可以使用所需的长度检查数组的长度,并使用value
变量进行乘法。
此值以后无需增加。
function triple_sequence(start, length) {
var res = [start],
value = start;
while (res.length < length) {
value *= 3;
res.push(value);
}
return res;
}
console.log(triple_sequence(2, 4)); // [2, 6, 18, 54]
更短的方法
function triple_sequence(start, length) {
return Array.from({ length }, (_, i) => start * 3 ** i);
}
console.log(triple_sequence(2, 4)); // [2, 6, 18, 54]
答案 2 :(得分:0)
您的代码中存在两个错误,最严重的错误是您将i乘以3并递增。这段代码效果更好:
function triple_sequence(start, length) {
var res = [start];
var i = start;
while (i < length) {
i++;
res.push(i * 3);
}
return res;
}
triple_sequence3(0, 3); // [0, 3, 6, 9]