我有一个非常受开发人员欢迎的算法练习,它返回:
steps(3)
#
##
###
steps(5)
#
##
###
####
#####
我正在研究以递归方式开发的版本。下面的代码工作正常。
function steps(n, row = 0 , stair = '') {
if(n === row) {
return;
}
if(n === stair.length) {
console.log(stair)
return steps(n, row + 1)
}
if (stair.length <= row) {
stair += '#';
} else {
stair += ' '
}
steps(n, row, stair)
}
steps(3)
我唯一的疑问与这部分代码中“返回”的重要性有关:
if(n === stair.length) {
console.log(stair)
return steps(n, row + 1) // <--- this 'return'
}
如果我删除'return',像这样:
if(n === stair.length) {
console.log(stair)
steps(n, row + 1) // <-- without the return
}
这会在控制台上生成一个循环错误:
超出最大调用堆栈大小
我想了解为什么会发生这种情况。我仍然没有太多的递归函数练习。
阿波罗的战车
慕桂英4014372
烙印99
相关分类