typescript 用递归函数填充的数组只包含从n到n的一半但不包含到0的数字

lqfhib0f  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(115)

我想用一个递归函数来填充数组。返回的数组并不是像实际所希望的那样包含从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,[]));
w6lpcovy

w6lpcovy1#

条件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]

相关问题