2016-03-19 12 views
0

再帰的なjavascript関数を反復配列スタックとして書き換えるためのテンプレートが必要です。このアプローチが標準的な再帰よりも速く、メモリを少なくすることを期待しています。私はオブジェクト参照をパラメータとして使用します。私の機能は否定的ですが、小さくてエレガントなフィボナッチシーケンスをリバースエンジニアリングしたいと思います。繰り返し配列スタックによるJavaScript再帰の書き換え

簡単な例は、Fibonacci_sequenceを書き換えることです。 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

ためrosettacodeから

反復方法が使用できます

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

関連する問題