gpt4 book ai didi

javascript - 为什么字符串 "PRINTS"在控制台中显示两次,期望它显示一次。递归测试

转载 作者:行者123 更新时间:2023-11-30 11:53:54 24 4
gpt4 key购买 nike

JavaScript 函数递归测试。意外结果是字符串“PRINTS”的测试打印在 Firefox 控制台中显示两次。我看不出“return "PRINTS"”是如何被击中两次的。

在 stackoverflow 的代码插入功能中,我运行了代码,它显示 PRINTS 五次,但 Firefox 控制台显示两次。我在想,因为该行在递归调用之后,它应该只打印一次 PRINTS。有五次递归调用,为什么这五次回到原来的调用,最后一行代码 console.log (isEven(11));

function isEven ( number ) {
if ( number == 0) {
return "even";

}
else if (number == 1) {
return "odd";

}
number = number - 2;
console.log (number);
//the if statements return goes to the recursive call, not outside funct call
console.log(isEven(number));
return "PRINTS";
}

console.log (isEven(11));

最佳答案

您需要将递归调用的结果返回到链中。

现在,您的代码将执行以下操作:

call isEven(11) ->
11 == 0 false
11 == 1 false
11 - 2 = 9
log(9)
call isEven(9) ->
9 == 0 false
9 == 1 false
9 - 2 = 7
log(7)
call isEven(7) ->
7 == 0 false
7 == 1 false
7 - 2 = 5
log(5)
call isEven(5) ->
5 == 0 false
5 == 1 false
5 - 2 = 3
log(3)
call isEven(3) ->
3 == 0 false
3 == 1 false
3 - 2 = 1
log(1)
call isEven(1) ->
1 == 0 false
1 == 1 true
return "odd"
log("odd")
return "PRINTS"
log("PRINTS")
return "PRINTS"
log("PRINTS")
return "PRINTS"
log("PRINTS")
return "PRINTS"
log("PRINTS")
return "PRINTS"
log("PRINTS")

所有那些`return "PRINTS"都不是您要找的机器人。

实际的代码更改留给读者作为练习。

关于javascript - 为什么字符串 "PRINTS"在控制台中显示两次,期望它显示一次。递归测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38649320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com