2016-09-21 11 views
2

Derzeit arbeite ich an einem R-Projekt, das folgenden Code enthält.Kann R Objekte speichern, die von einer Funktion für die zukünftige Verwendung erstellt wurden?

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) 

Ich möchte nur wissen, dass, wie funktioniert R die Fibonacci-Funktion in einem Code wie folgt berechnen? Einfacher ausgedrückt, wenn es im Vektor "vec" zu Nummer 25 kommt, berechnet R die ganze Funktion, oder kann R die fib (25) unter Verwendung der Werte von fib (24) und fib (23) berechnen, da sie bereits berechnet wurden?

+1

Siehe [hier] (http://stackoverflow.com/questions/6807068/why-is-my-recursive-function-so-slow-in-r) einen ähnlichen Beitrag. –

Antwort

2

Es wird standardmäßig alle rekursiven Werte einzeln berechnet, aber Sie können ein externes Paket wie memoise verwenden, um vorherige Werte zu cachen oder selbst zu tun. Werfen Sie einen Blick auf die following blog, die dies auch mit einer Fibonacci-Funktion zeigt.

Verwandte Themen