Javascript 理解返回倒计数的递归循环
下面是创建上述输出的函数,我完全理解它的工作原理Javascript 理解返回倒计数的递归循环,javascript,recursion,Javascript,Recursion,下面是创建上述输出的函数,我完全理解它的工作原理 inner conditional: 5 inner conditional: 4 inner conditional: 3 inner conditional: 2 inner conditional: 1 0 当修改函数以使内部条件不返回函数时,console.log将显示以下内容 function loop(counter){ if(counter > 0){ console.log("inner con
inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
当修改函数以使内部条件不返回函数时,console.log将显示以下内容
function loop(counter){
if(counter > 0){
console.log("inner conditional: " + counter );
return loop(counter - 1)
}
console.log(counter);
return counter
}
loop(5)
下面是负责上述输出的功能
inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
1
2
3
4
5
我完全不明白这一点。我想简单地解释一下,如何创建扩展远期计数
我使用了以下工具来可视化代码的单步执行,但我仍然没有“理解”它:问题是,您再次调用函数,函数以计数器<1结束,但它没有结束实际函数本身,并在以后使用计数器进行输出 如果缩进显示相同的功能,则显示相同的级别
function loop(counter){
if(counter > 0){
console.log("inner conditional: " + counter );
loop(counter - 1)
}
console.log(counter);
return counter
}
loop(5)
从循环函数的第一个实例内部调用带有返回的循环函数,这会阻止“return”之后的其余语句执行。
但是,在第二个实例中,循环函数在没有返回的情况下被调用,因此if条件之外的console.log也会被执行,并且您会看到console.log两个输出。我想要的答案是1-5个计数被从堆栈的顶部拉下来 我在youtube上找到了一个很棒的视频,用可视化的方式解释了这一点:
简单地说,删除
返回
,当它结束对循环(计数器-1)
的调用时,它将继续到最后一个控制台.log
,即使计数器是>0
…您可以使用其他控制台.log(计数器)来进行转换我想你不明白这个问题。我想解释一下为什么计数向前五次。如果您使用我链接到的代码执行工具,我想对步骤20之后发生的事情进行解释,这正是我的评论,但可能我解释得很糟糕:递归调用循环(计数器-1)
,并在调用后充当控制台.log
,这意味着它将log
从最内部(最后一次)调用开始,并在内部调用完成后从最旧的函数调用开始打印…很抱歉不准确,希望它能帮助您在计数器大于0的第一个代码段中返回,然后再到达控制台.log(计数器)代码>指令。但是在第二个代码段中,console.log(计数器)前面没有返回代码>指令,使其每次返回前都到达console.log。
inner conditional: 5
inner conditional: 4
inner conditional: 3
inner conditional: 2
inner conditional: 1
0
1
2
3
4
5