Se utilizan funciones recursivas en R?
La función canónica para demostrar la recursividad es la función factorial (). Intenté una implementación simple de mí mismo y se me ocurrió esto:
factorial <- function(x){
if(x==1)
return( 1)
else
return(x*factorial(x-1))
}
De mi encuesta sobre el tema, parece haber cierto debate sobre si es mejor usar la recursión o la iteración simple. Quería ver cómo R lo implementa y encontré una función factorial () en el paquete gregmisc. Pensé que encontraría algo como mi implementación o, en cambio, una iteración regular. Lo que encontré esto:
> factorial
function (x)
gamma(x + 1)
<environment: namespace:base>
Así que la respuesta a mi pregunta de si R prefiere la recursividad o la iteración es "ninguna". Al menos en esta implementación. ¿Se evitan las funciones recursivas en R por una buena razón?
Actualizar
gregmisc versión:
>ptm <- proc.time()
> factorial(144)
[1] 5.550294e+249
> proc.time() - ptm
user system elapsed
0.001 0.000 0.001
mi version
> factorial(144)
[1] 5.550294e+249
> proc.time() - ptm
user system elapsed
0.002 0.001 0.006