我想用递归函数填充数组。返回的数组并不包含所有从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,[]));
您的条件a.length <= n
有错误。您正在减少n
,并向a
添加元素,因此在某个点,n
将小于a
的长度,大约完成一半。
将条件更改为n > 0
,如下所示:
let fillArrayBackwards = (n: number, a: number[]): number[] => {
a.push(n);
return n > 0 ? fillArrayBackwards(--n, a) : a;
}
console.log(fillArrayBackwards(10,[]));
返回:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]