Вторник, 25 Июня 2013 11:35

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

Written by 
Оцени эту запись
(3 Голоса)

Рекурсивная функция - это функция, которая вызывает сама себя. Таким функциям есть много примеров, но самым популярным примером является вычисление факториала.

 

Факториал вычисляется по формуле:

 

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

 

Например, 5! = 5*4*3*2*1 = 120.

 

Если же n равно 0, то факториал будет равен 1 (так математики договорились). 

 

Функция вычисления факториала выглядит так:

 

function fact(n) {
    if (n == 0)
          return 1;
    else
          return n * fact (n-1);
}
 
 
Проверим ее в действии. Ниже вы видите инпут. Введите туда число и нажмите Enter.
 

 

 

 

Рекурсия может быть немножко другой - две функции могут вызывать друг друга, создавая этим непрерывный процесс.
 
 
Например, мне недавно задали задачку -- есть некоторая функция, которая выполняется минуту или больше, она повторяется, но не раньше, чем через 1 секунду. Мне также рассказали, что такую функцию можно легко создать при  помощи рекурсии:
 
 
 
var a = 0;
function Action () {
// working for 1 second
setTimeout(function(){
                recRes.innerHTML += a+'<br />';
                a++;
                Time();
            }, 1000);
}
 
function Time () {
 //waiting for 1 second
            setTimeout(function(){
                recRes.innerHTML += 'waiting...'+'<br />';
                Action();
            }, 1000);
}
 
 
 
Результат:
 
 
 
 
 

 

Additional Info

You have no rights to post comments

верстка | CSS | верстка сайтов | HTML | верстальщик | блочная верстка | JavaScript | css верстка | профессиональная верстка сайтов