【发布时间】:2020-12-08 16:16:51
【问题描述】:
我想做一个简单的倒计时函数,如果我将 10 作为参数传递,应该返回一个类似 [10,9,8,7,6,5,4,3,2,1] 的数组
我认为每次我的参数“n”在下面的这个递归函数中传递时,我只需要将新值“n”推送到数组中。但是这里好像 push 方法不合适,需要 unshift 方法,如下图。
但是为什么呢?我不明白逻辑。
下图:函数推送 n:
function countdown(n){
if (n < 1) {
return []
}
let array = []
array = countdown(n-1)
array.push(n)
return array
}
console.log(countdown(10))
[1、2、3、4、5、6、7、8、9、10]
下面,函数取消 n 移位:
function countdown(n){
if (n < 1) {
return []
}
let array = []
array = countdown(n-1)
array.unshift(n)
return array
}
console.log(countdown(10))
[ 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ]
【问题讨论】:
-
使用
push(),您的结果是[countdown(9), 10],即[countdown(8), 9, 10],即[countdown(7), 8, 9, 10],即……这对您有帮助吗? -
标准递归问题,被问和回答了数百次......
-
注意你是
pushing 之后递归调用发生
标签: javascript push