gpt4 book ai didi

javascript - javascript中的递归和返回

转载 作者:行者123 更新时间:2023-11-30 08:11:38 26 4
gpt4 key购买 nike

我正在 CodeAcademy.com 学习 Javascript我很难理解一道练习题,尽管我似乎找到了正确答案。

该代码旨在帮助人们计算出当有人买东西时他们应该返还多少零钱。它输入一个数字并计算他们应该返还多少 25 美分和多少便士。

这是我不明白的地方:

• 代码不应该在第一次遇到第 11 行时停止运行吗?如果不是,为什么不呢?

• 如果代码确实在进入第11 行时停止运行,为什么我可以将代码放在第10 行之后并且它会执行3 次才给出答案?我发现是这样的,所以这让我质疑我对代码工作原理的理解!我在第 10 行之后添加了 quarters += 1; 行,它返回 6。

var change = 0;
var quarters = 0;
function howManyQuarters(howMuchMoney) {
if (howMuchMoney < 0.25) {
change = howMuchMoney;
return 0;
}
else {
quarters += 1;
howManyQuarters(howMuchMoney-0.25);
return quarters; // << line 11
}
}

change = 0.99;
console.log ("Pay out " + howManyQuarters(change) + " quarters");
console.log ("And you'll have " + change * 100 + " pennies left over");

最佳答案

代码不会在第 11 行第一次停止运行,因为它第一次到达第 10 行时(有效地)返回到第 3 行。

试着这样想。我已经排列了递归级别:

1.  (Line 15) howManyQuarters(0.99)
2. (Line 4) howMuchMoney is > 0.25...so else applies
3. (Line 10) howManyQuarters(0.74) --> 0.74 = 0.99-0.25
4. (Line 4) howMuchMoney is > 0.25...so else applies
5. (Line 10) howManyQuarters(0.49) --> 0.49 = 0.74-0.25
6. (Line 4) howMuchMoney is > 0.25...so else applies
7. (Line 10) howManyQuarters(0.24) --> 0.24 = 0.49-0.25
8. (Line 4) howMuchMoney is < 0.25...so enter main body of if clause
9. (Line 6) return 0;
11. (Line 11) return quarters;
12. (Line 11) return quarters;
13. (Line 11) return quarters;
14. (Line 11) return quarters;

关于javascript - javascript中的递归和返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9579838/

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