g <- function(f, x, k){ for(i in 1:k) x <- f(x) x } g(sqrt, 256, 3)
Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El 12 de mayo de 2016, 10:40, rubenfcasal <rubenfca...@gmail.com> escribió: > Yo de primeras lo haría así: > > f <- function(x) return(x^2) > > recursiva <- function(x, fun, k) { > if (k > 1) return(fun(recursiva(x, fun, k-1))) else return(fun(x)) > } > > > recursiva(2,f,1) > [1] 4 > > recursiva(2,f,2) > [1] 16 > > recursiva(2,f,3) > [1] 256 > > f(f(f(2))) > [1] 256 > > Un saludo, > Rubén FC > > > > El 12/05/2016 a las 10:29, Carlos Ortega escribió: > >> Hola Jorge, >> >> Creo que la función que buscas está del lado de las varias >> implementaciones >> que tiene "R" del lado de la "Programación Funcional". >> En particular miraría la función "Reduce()". >> Y también la función "accumulate()" del paquete de Hadley Wickham "purr" >> (Functional Programming Tools). >> >> Saludos, >> Carlos Ortega >> www.qualityexcellence.es >> >> El 12 de mayo de 2016, 5:39, Jorge I Velez <jorgeivanve...@gmail.com> >> escribió: >> >> Hola a todos, >>> >>> Quisiera aplicar una función f(x) un total de k veces de manera >>> recursiva. >>> En pseudo código sería algo como >>> >>> Si k = 1, calcular f(x); >>> Si k = 2, calcular f(f(x)); >>> Si k = 3, calcular f(f(f(x))). >>> >>> Al final me gustaria tener una función g cuyos argumentos sean x y el >>> valor >>> de k. Así, >>> >>> g(x, k = 2) >>> >>> daría como resultado f(f(x)). >>> >>> Cualquier ayuda y/o sugerencia será más que bienvenida. >>> >>> Muchísimas gracias, >>> Jorge Velez.- >>> >>> [[alternative HTML version deleted]] >>> >>> _______________________________________________ >>> R-help-es mailing list >>> R-help-es@r-project.org >>> https://stat.ethz.ch/mailman/listinfo/r-help-es >>> >>> >> >> > _______________________________________________ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es