продублирую здесь. Есть рекурсивная функция, которая вычисляет степень числа.
const expt = (b, n) => {
if (n === 0)
return 1;
return b * expt(b, n-1);
}
expt(5, 4)
Первый аргумент число, а второй степень. Хочу понять как работает функция внутри. Мне не понятно как происходит умножение здесь return b * expt(b, n-1); После каждой итерации в окружении или в стеке (не знаю как правильно) сохраняется 2 числа, так почему b умножается именно на b, ведь в функции передается 2 числа. b умножается на результат функции expt(b, n-1), после первой итерации результат будет b * (5, 4) потом b * (5, 3) и так до конца.
Если взять функию факториала, то там все понятно, передается только одно число, и умножается все на него же самого.
const factorial = (n) => {
if (n === 1)
return 1;
return n * factorial(n - 1);
}
factorial(5)
По какому принципу происходит умножение в первом случае? Куда девается n? Визуализация работы функции в Pythontutor https://goo.gl/zjqBnG
А зачем именно такая запись - циклом проще и быстрее
https://t.me/frp_ru тебе ещё тут ответили
Обсуждают сегодня