由递归函数填充的数组只包含n到n的一半之间的数字,不包含0



我想用递归函数填充数组。返回的数组并不包含所有从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]

最新更新