Изучаю 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); что дальше происходит и почему?
Правильно передаём параметры 2, 3
3 не равно 1, да ---> переходим в блок ifx. Тут краткая запись она означает x = x * результат выполнения функции.
Возвращаем какой результат? --> x умноженный на результат выполнения функции pow, с новыми параметрами. Какими ? 2, 3-1 --> 2, 2Т.е. функция вызывает, сама себя). И поехали ---->
Проверяем теперь уже 2 не равно 1, да ---> переходим в блок if
Возвращаем результат. x умноженный на pow(2, 1);
Результат снова записали в х.
1 не равно 1 - это условие ложно, т.к. 1=1, значит переходим в блок else и просто возвращаем x. А там у же накопились значения с предыдущих шаговПродвижение своими сайтами как стратегия роста и независимости