Показать сообщение отдельно
  #2 (permalink)  
Старый 26.10.2014, 13:30
Аватар для viktorina
Профессор
Отправить личное сообщение для viktorina Посмотреть профиль Найти все сообщения от viktorina
 
Регистрация: 04.01.2013
Сообщений: 173

функция вызывает себя же.
матрёшка.
pow(x, n) - вызываем
pow(x, n-1) - вызываем
pow(x, n-2) - вызываем
и так пока n не не достигнет 1.
Вы вызвали функцию. Эта функция в свою очередь вызывает себя же, но степень уже на 1 меньше, и так далее.
Функция вызывается в функции, которая вызывается в функции.
Ещё раз.
2 в кубе - это 2*(2*2)
2 в четвёртой - это 2*(2*(2*2))
function pow(x, n) {

 return x нужно перемножить n раз 
 }

Вот как отработает функция.
pow(2, 5) = 2 * (pow(2, 4)) = 2 * (2 * pow(2, 3)) = 2 * (2 * (2 * pow(2, 2))) = 2 * (2 * (2 * (2 * pow(2, 1))))
можно это делать в цикле
function pow(x, n) {
  var result = 1;
  for (var i = n; i >= 1; i--) {
      result *= x;
  }
 return result
 }

Последний раз редактировалось viktorina, 26.10.2014 в 14:01.
Ответить с цитированием