Введите ваш адрес почты


sdcvoy.ru
Понравился сайт? Поделись с друзьями!
Главная » Javascript » Rekursiya-i-stek-v-javascript

Рекурсия и стек в JavaScript

рекурсияСегодня вы познакомитесь с очень интересной темой — это рекурсия и стек. Давайте определимся что же такое рекурсия. Вообще рекурсия используется во всех языках программирования, а не только в JavaScript.


Рекурсия — это вызов функции самой себя. Это делается тогда, когда нам надо вычислить сложное выражение, разбивая его на более простые до тех пор пока оно не станет элементарным.


Сложное определение? Ну ничего я думаю вы поймёте. Например, давайте посчитаем факториал 5 или как обозначается в математике 5!. Если кто помнит факториал 5 будет равен:

5! = 5 * 4 * 3 *2 * 1

// или факториал любого числа можно разложить так

n! = n * (n-1) * (n-2) *.... * 1

Давайте вычислим факториал с помощью рекурсии:

function factorial (n) {
if (n!=1) {
   return n*factorial(n-1);
}
else{
  return n;
 }
}
alert ( factorial(5) );

В данном случае мы будем вызывать функцию 5 раз. Как раз пять вычислений у нас образуют так называемый стек. Значение окончание рекурсии называется ещё базисом рекурсии . А число вызовов функции её глубиной. Вообще рекурсии очень хорошо применять например для вычисления каких-либо сумм, степеней и т.п. Вообще надо пояснить понятие стека. Стек состоит из контекстов выполнения, которые удаляются по мере их не надобности.

То есть в случае рассмотрения нашего примера:

5!=5*4!;
4!=4*3!;
3!=3*2!;
2!=2*1!;
1!=1; // выполнится первым

Последняя строчка в стеке выполнится первой, далее за ненадобностью она уйдёт из стека и выполнится строчка 2!=2*1!; и так далее в данном случае пять раз. Если вам что-то непонятно, не стесняйтесь задавать вопросы, в силу своих знаний и возможностей постараюсь на них ответить. Не забываем делиться информацией с друзьями. Удачи!



наверх