Рекурсивные функции

Оцените материал
(4 голосов)

Здравствуйте! В продолжении темы функций в JavaScript  в этом уроке разберем что такое рекурсивные функции. Итак рекурсия - это когда функция вызывает сама себя. Тема рекурсии это общая тема программирования, поэтому если вы уже знакомы с ней то можете дальше не читать, а этот материал предназначен для тех, кто не знает что такое рекурсия. Для того чтобы разобраться с рекурсией рассмотрим простые примеры.

Рекурсивные функции в JavaScript

 

 

Вычисление степени числа с помощью рекурсии.

Первый пример на рекрсию. который мы разберем - это будет вычисление степени числа.  Такую операцию можно представить так:

  pow(x, n) = x * pow(x, n - 1)

То есть всю операцию по возведению можно представить так.

 function stepen(x, n) {
  if (n != 1) { // пока n != 1, сводить вычисление stepen(x,n) к stepen(x,n-1)
    return x * stepen(x, n - 1);
  } else {
    return x;
  }
}

alert( stepen(2, 3) ); // 8

Из примера видно, что функция вызывает сама себя до n==1. Следует отметить, что браузеры допускают рекурсивные вызовы до 10000, хотя некоторые интерпретаторы допускают и больше.

Это следует  учитывать при написании рекурсивного кода. 

Другой пример на рекурсию - это вычисление факториала числа.

  function factorial(n){
    if (n === 1){
        return 1;
    }
    else{
         
        return n * factorial(n - 1);
    }
}
alert(factorial(4)); // 24

Просмотреть  пример

Итоги

Рекурсия - это когда функция вызывает сама себя. Есть много примеров применения рекурсии, также рекурсия используется в HTML для копирования сложных объектов.

В дальнейшем по ходу курса JavaScript мы еще не раз столкнемся с таким понятием как рекурсия.

Задания

Вычислить сумму чисел.

Напишите функцию, которая для заданного n вычисляет сумму чисел. Например sum(5) = 1+2+3+4+5 = 15.

Выведите ряд Фибоначчи.

Последовательность чисел Фибоначчи имеет  следующую формулу Fn = Fn-1 + Fn-2. То есть, следующее число получается как сумма двух предыдущих.

Таким образом  Первые два числа равны 1, затем 2(1+1), затем 3(1+2)

То есть fibChisla(3) = 2, 

 И на закрепление материала посмотрите видео по рекурсивным функциям в JavaScript.

 

Прочитано 403 раз Последнее изменение Понедельник, 02 октября 2017 16:28
Другие материалы в этой категории:
Понравилась запись? Подпишитесь на обновления по почте:

Нетология

TemplateMonster

geekbrains.ru/

Поиск по сайту

Google+