@Adil1603

Как выполняется данная функция?

Подскажите пожалуйста, как выполняется данная рекурсивная функция, возведения числа в степень?

<?php
function myRecursion($x, $n) {
  if ($n == 0) {
    return 1;
  }
  if ($n < 0) {
    return myRecursion(1/$x, -$n);
  }
  return $x * myRecursion($x, $n-1);
}

var_dump(myRecursion(5, 3));
?>


После доведения $n до нуля и возврата функции 1, что происходит?
return $x * myRecursion($x, $n-1);
в этом коде почему запись myRecursion($x, $n-1), а не myRecursion($n-1)
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега PHP
Web developer
как выполняется данная рекурсивная функция, возведения числа в степень?

Для начала нужно вспомнить математику:
x^n = x * x^(n-1)
x^0 = 1

После доведения $n до нуля и возврата функции 1, что происходит?

myRecursion($x, 0) возвращает 1
получается x*1, это возвращается в ответ на вызов myRecursion($x, 1)
получается x*x, это возвращается в ответ на вызов myRecursion($x, 2)
и т.д.

почему запись myRecursion($x, $n-1), а не myRecursion($n-1)

потому что у этой функции должно быть два параметра, а не один
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы