Как "работает" рекурсивная функция Фибоначчи? - PullRequest
58 голосов
/ 13 января 2012

Я новичок в Javascript и читал об этом, когда пришел к главе, в которой описана рекурсия функций. Он использовал пример функции, чтобы найти n-е число последовательности Фибоначчи. Код выглядит следующим образом:

function fibonacci(n) {
   if (n < 2){
     return 1;
   }else{
     return fibonacci(n-2) + fibonacci(n-1);
   }
}

console.log(fibonacci(7));
//Returns 21

Мне трудно понять, что именно делает эта функция. Может кто-нибудь объяснить, что здесь происходит? Я застреваю на 5-й строке, где функция вызывает себя. Что здесь происходит?

Ответы [ 11 ]

0 голосов
/ 03 сентября 2018

алгоритм Фибоначчи с рекурсивной функцией на основе ES6

const fibonacci = ( n, k = 1, fib2 = 0, fib1 = 1 ) => {
  return k === n ? 
    (() => { return fib1; })() 
    : 
    (() => {
      k++;
      return fibonacci(n, k, fib1, fib1 + fib2);
    })();  
}
console.info(' fibonacci ' + 11 + ' = ' + fibonacci(11));
...