以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
39. 手写range()
以下是两种实现方式:
- 利用生成器函数实现range()
function* range(from, to) {
while(from <= to) {
yield from++;
}
}
for (let num of range(1, 4)) {
console.log(num);
}
// 1
// 2
// 3
// 4
生成器函数可以迭代返回一个序列,而不是需要一次性返回整个数组。
- 利用递归实现range()
function range(from, to, arr=[]) {
if(from > to) return arr;
arr.push(from);
return range(from+1, to, arr);
}
for (let num of range(1, 4)) {
console.log(num);
}
// 1
// 2
// 3
// 4
递归的方法实质上是不停地调用函数直到满足终止条件,此处终止条件是from > to
。每次调用时将from
加入数组,并将from
加一递归调用函数,直到终止。这个实现方式相对而言比较简洁易懂。