我是代码世界的初学者。我很难理解JavaScript中的递归,尤其是当它需要两个或多个循环时。就像我想使用递归打印矩形。我不完全知道如何制作一个基本案例,条件何时仍然执行。例如,下面这些代码用于打印矩形或多孔矩形。
function box(num) {
for (let i = 0; i < num; i++) {
let str = ''
for (let j = 0; j < num; j++) {
str += '*'
}
console.log(str)
}
}
box(5)
function holeBox (num) {
for(let i = 0; i < num; i++){
let str = ''
for(let j = 0; j < num; j++){
if(i == 0 || i == num -1 || j == 0 || j == num - 1) {
str += '*'
} else {
str += ' '
}
}
console.log(str)
}
}
holeBox (5)
请帮助我理解递归,一个很好的解释。我的目标不仅是解决这些代码,而且要理解递归的工作方式。我搜索了没有足够的资源来学习递归,或者我太笨了以至于无法理解。提前致谢
最佳答案
是的,即使您的Box代码也可以转换为递归,但是我认为它不会帮助您理解递归的概念。
如果确实需要:
function getBox(arr, size) {
let length = arr.length;
if (length == size)
return arr; // recursion stop rule - if the size reached
for (let i = 0; i < length; i++)
arr[i].push("*"); // fill new size for all row
arr.push(new Array(length + 1).fill("*")); // add new row
return getBox(arr, size); // recursive call with arr bigger in 1 row
}
但是,我相信@Gumbo的答案比这个更好地解释了这个概念...