【发布时间】:2021-07-14 14:14:51
【问题描述】:
我正在尝试获得这种模式:
[
[,,2],
[,2,1],
[2,1,0]
]
我尝试了以下代码:
let n = 3
let mainArr = Array(n)
for (let i = 0; i < mainArr.length; i++) {
mainArr[i] = new Array(n)
}
let odi = 0; // stands for one dimensional index
let tdi = n - 1; // stands for two dimensional index
let diagonalValue = n - 1;
for (let i = 0; i < n; i++) {
recur(odi, tdi)
odi++;
tdi--;
diagonalValue--;
}
function recur(frst, scnd) {
if (mainArr[frst] === undefined || mainArr[scnd] === undefined) {
return
} else {
mainArr[frst][scnd] = diagonalValue;
return recur(frst + 1, scnd - 1)
}
}
console.log(mainArr);
但我得到了这个输出:
[
[,,2],
[,1,],
[0,,]
]
所以我认为在 for 循环中使用递归时我遗漏了一些关于递归的内容,因为我使用递归解决了许多问题,但只是以随意的方式而不在 for 循环中使用它。
您能否向我解释一下当我们在for 循环中使用递归函数时会发生什么。它是在每次迭代时调用自身,还是 for 循环等待递归函数完成,然后循环移动到下一次迭代?
【问题讨论】:
-
至于你的最后一个问题:你可以用调试器分析自己。单步执行代码并检查变量。
标签: javascript for-loop recursion