我想用一个递归函数来填充数组。返回的数组并不是像实际所希望的那样包含从n到0的所有数字,而是从n到它的一半,为什么?我想不出来。
let fillArrayBackwards = (n : number, a : number[]) : number[] =>{
a.push(n);
return a.length <= n ? fillArrayBackwards(--n, a) : a;
}
console.log(fillArrayBackwards(10,[]));
我想用一个递归函数来填充数组。返回的数组并不是像实际所希望的那样包含从n到0的所有数字,而是从n到它的一半,为什么?我想不出来。
let fillArrayBackwards = (n : number, a : number[]) : number[] =>{
a.push(n);
return a.length <= n ? fillArrayBackwards(--n, a) : a;
}
console.log(fillArrayBackwards(10,[]));
1条答案
按热度按时间w6lpcovy1#
条件
a.length <= n
中有一个错误。您正在减少n
,并向a
添加元素,因此在某个点上,n
将小于a
的长度,大约是一半。将条件更改为
n > 0
,如下所示:将返回:
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]