2016-03-19 9 views
0

Benötigen Sie eine Vorlage zum Umschreiben einer rekursiven JavaScript-Funktion als iterative Array-Stack. Ich hoffe, dass dieser Ansatz schneller ist als die Standardrekursion und weniger Speicher benötigt. Ich verwende Objektreferenzen als Parameter. Meine Funktion ist Negascout, aber ich würde gerne die kleinere und elegante Fibonacci_sequenz zurückentwickeln.Javascript Rekursion mit iterativen Array-Stack neu schreiben

Ein einfacheres Beispiel wäre, Fibonacci_sequence neu zu schreiben.

Von rosettacode für Fibonacci_sequence

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

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

Antwort

0

Eine iterative Art und Weise können sein:

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));