Я изучаю Javascript на CodeAcademy.com, и у меня возникли трудности с пониманием вопроса об упражнении, хотя я, кажется, нашел правильный ответ.Рекурсия и возврат в javascript
Код разработан, чтобы помочь кому-то решить, сколько изменений они должны отдать, когда кто-то что-то покупает. Он принимает число и вычисляет, сколько кварталов и сколько копеек они должны отдать.
Вот что я не понимаю:
• Не следует ли код остановки запуска в первый раз, он встречает линии 11? Если нет, почему бы и нет?
• Если код не работает, когда он входит в строку 11, почему я могу разместить код после строки 10, и он будет выполняться три раза, прежде чем будет дан ответ? Я обнаружил, что это так, поэтому я задал вопрос о том, как работает код! Я добавил строку quarters += 1;
после строки 10 и возвращает 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");
howManyQuarte rs (.99) -> howManyQuerters (.99-.25) -> howManyQuarters (.74-.25) ... В строке 10 функция вызывает себя, но с другим меньшим значением. Это повторяется до тех пор, пока условие в строке 4 не будет истинным, тогда все вернется обратно в стек. Одним упражнением будет проследить весь путь до стека, пока вы не вернетесь к возврату 0, а затем проследите его обратно. – jmort253
Код будет остановлен в строке 11, так как это там, где функция howManyQuarters возвращает значение –
Спасибо за ваш ответ. То, что я не понимаю: если я добавлю четверти + = 1 снова между строками 10 и 11, он даст ответ из шести. Почему он добавил бы еще три четверти? Я предположил, что это добавит еще один? – inperspective