2016-03-19 1 views
0

Нужен шаблон для перезаписи рекурсивной функции javascript в виде итеративного массива. Для надежды, что этот подход быстрее, чем стандартная рекурсия, и будет использовать меньше памяти. Я использую ссылки на объекты как параметры. Моя функция неаккуратная, но я бы хотел перепроектировать меньшую и элегантную Fibonacci_sequence.переписывание рекурсии javascript с использованием итеративного массива массивов

Простым примером является переписывание Fibonacci_sequence.

От rosettacode для Fibonacci_sequence

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

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

ответ

0

Итерационный способ может быть:

function iterativeFibonacci(n){ 
 
    if (n < 2){ 
 
    return 1; 
 
    } 
 

 
    var i; 
 
    var fibs = new Array(); 
 
    fibs.push(0); 
 
    fibs.push(1); 
 
    for(i=0; i<=n; i++){ 
 
    fibs.push(fibs[0] + fibs[1]); 
 
    fibs.shift(); 
 
    } 
 
    return fibs[0]; 
 
} 
 

 
document.write(iterativeFibonacci(7));