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]]
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 <jorgeivanvelez en 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 en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >-- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
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 <jorgeivanvelez en 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 en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> > >