JavaScript рекурсия

373
03 февраля 2017, 06:43

Изучаю JavaScript, рекурсия. Пример из учебника.

Задача: возведение числа x в натуральную степень n. В данном примере функция с параметрами (2,3).
Код:

function pow(x,n) { 
	if (n != 1) { 
	  return x *= pow(x,n - 1); 
	} else { 
	  return x; 
	} 
} 
alert( pow(2,3)); // 8

Не могу разобраться, как работает данная функция. ( x, n) это ведь всего лишь параметры которые мы передаем, почему здесь в pow return x *= pow(x,n - 1); что-то происходит и откуда взялся этот -1?
x *= pow(2,2); что дальше происходит и почему?

Answer 1

Правильно передаём параметры 2, 3

  1. Дальше проверяем 3 не равно 1, да ---> переходим в блок if
  2. Возвращаем результат и записываем его в x. Тут краткая запись она означает x = x * результат выполнения функции. Возвращаем какой результат? --> x умноженный на результат выполнения функции pow, с новыми параметрами. Какими ? 2, 3-1 --> 2, 2
  3. Т.е. функция вызывает, сама себя). И поехали ---->

  4. Проверяем теперь уже 2 не равно 1, да ---> переходим в блок if

  5. Возвращаем результат. x умноженный на pow(2, 1);

  6. Результат снова записали в х.

  7. Проверяем 1 не равно 1 - это условие ложно, т.к. 1=1, значит переходим в блок else и просто возвращаем x. А там у же накопились значения с предыдущих шагов
READ ALSO
Что означает доллар?

Что означает доллар?

ЗдравствуйтеНе могу понять, что означает эта запись на jQuery:

842
Не могу по нажатию кнопки выводить значение

Не могу по нажатию кнопки выводить значение

Доброго всем дня, в приложении присутствует таблица с колонкой Id и к каждой колонке есть кнопкаНужно по нажатию кнопки вводить в консоль...

636
Инкапсуляция JavaScript

Инкапсуляция JavaScript

Как достать инкапсулированное значение в прототип?

392