2016-09-21 3 views
2

現在、私は以下のコードを含むRプロジェクトに取り組んでいます。Rは、将来の使用のために関数によって作成されたオブジェクトを保存できますか?

vec <- 1:25 
fib <- function(x) 
{ if (x==0) return (0) 
if (x==1) return (1) 
if (x==2) return(2) 
return(fib(x-1)+fib(x-2)) 
} 
lapply(vec,fib) 

私が知りたいのは、Rがfibonacci関数をこのようなコードでどのように計算するのですか?もっと簡単に言えば、ベクトル "vec"の25番目の数字は、Rが関数全体を計算するか、fib(24)とfib(23)の値を使ってfib(25)を計算することができます。

+1

[こちら](http://stackoverflow.com/questions/6807068/why-is-my-recursive-function-so-slow-in-r)を参照してください。 –

答えて

2

デフォルトではすべての再帰値が1つずつ計算されますが、memoiseなどの外部パッケージを使用して以前の値をキャッシュするか、自分で実行することができます。 following blogを見てください。フィボナッチ関数を使ってこれを示しています。

関連する問題