продублирую здесь. Есть рекурсивная функция, которая вычисляет степень числа.
                  
                  
                  
                  
                  
                  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 тебе ещё тут ответили
Обсуждают сегодня