Los algoritmos recursivos no son un recurso tan utilizado por los programadores, inclusive, también se plantean discusiones acerca de algoritmos iterativos vs. recursivos.
Independientemente de la preferencia de cada uno de los programadores, la idea de esta publicación es mostrar con un ejemplo sencillo una misma función “potencia” escrita de ambas formas.
Una función potencia, de forma iterativa se puede escribir de la siguiente manera:
[C]
int potencia ( int base, int exponente ) {
long p=1;
int i;
for ( i=1 ; i<=exponente ; i++) {
p*=base;
}
return(p);
}
[/C]
Ahora, por definición, una función es recursiva cuando en su cuerpo hay un llamado a si misma.
Esta definición es perfectamente aplicable a la potenciación, pues: xy = x * (xy-1), por ejemplo:
24 = 2 * (23)
donde, 23 = 2 * (22)
donde, 22 = 2 * (21)
donde, 21 = 2 * (20)
Por lo tanto, esto se podría escribir de la siguiente manera:
[C]
int potencia( int base, int exponente) {
if(exponente == 0) {
return 1
} else {
return base * potencia(base, exponente -1) // llamada recursiva
}
}
[/C]
Tal vez este no sea el caso más representativo, pero una de las principales ventajas por las que se utilizan algoritmos recursivos es la por la disminución de la cantidad de líneas de código necesarias.
Vía: Nuevos Programadores


Ayoze
septiembre 11, 2008
No habría estado de más un análisis de complejidad… xD
anonima osea
octubre 21, 2008
baaa no sirve para nada okey pongan algo que sirva no esa estupides
the star
octubre 21, 2008
bueno yo opino que tiene que poner algo que deverdad sirva pero eso eso no me dice nada asi que para la proccima analicen que eso lo nececito el viernes y no encuentro ejemplo de potencia ummmmmmmmm
Luciano
octubre 21, 2008
La utilidad o no de las funciones presentadas es relativa. Yo las veo como un excelente ejemplo básico de algoritmos.
Pero como dije, solo un “ejemplo básico”.
elecTron
octubre 26, 2008
A mi si me ha servido para comprender un poco mas la recursividad.
¡¡¡Muchas gracias!!!
jose
noviembre 26, 2008
hola mi nombre es fabian quisiera saber como hacer la potencia no recursiva al igual que la serie de fibonacci si pueden que se recursiva y no recursiva. muchas gracias
atte:fabian eduardo
Fernando
mayo 12, 2009
Cito tus palabras:
Tal vez este no sea el caso más representativo, pero una de las principales ventajas por las que se utilizan algoritmos recursivos es la por la disminución de la cantidad de líneas de código necesarias.
no quiero discutir sobre el tema, pero si darte mi punto de vista, dado a que la recursividad no se utiliza para ahorrar lineas de codigo.
La recursividad es un tema dificil de plantear, puedes demorar mas tiempo pensando un algoritmo recursivo, que escribiendo un algoritmo a base de While y for.
el uso de la recursividad pasa a entregar solucion a algoritmos de naturaleza recursivos, donde se obtendra un beneficio en Coste y Orden, de la solucion del algoritmo.
Ahora… si tienes 2 soluciones, al mismo problema, uno recursivo y otro no recursivo y ambas son del mismo Orden, seria prudente de parte del programador, implementar la solucion No recursiva. ya que el Uso de la recursividad, utiliza un espacio en memoria Adicional a la que usa un algoritmo No recursivo.
PD: para el amigo que pregunta sobre la serie fibonachi, le recomiendo hacerla NO recursiva. es extremada costosa en terminos de CPU utilizar un algoritmo recursivo para esa solucion.
Saludos cordiales y Felicitaciones por el Blog.
tienen muy buena informacion.
Exito!
Juan
marzo 17, 2010
Los algoritmos recursivos no solo tienen la ventaja de que utiliza menos lineas de código, sino que
el procesador lo realiza en mucho menos tiempo, quizás con un simple código no se percate, pero al realizar un programa grande se vera la diferencia. Hay una forma de explicar el porque en física pero no lo recuerdo jeje xD
Juan
marzo 17, 2010
ups, respecto a mi anterior comentario debo admitir que estube equivocado, los algoritmos recursivos en la mayoria de las veces utiliza mas recursos y tiempo
Hector Murcia
noviembre 26, 2011
En muchos casos, los algoritmos recursivos tienen su aplicabilidad plena, real e irreemplazable (es decir, ningún método NO RECURSIVO los podría suplir) en problemas complejos que requieren la aplicación de estructuras de datos en forma de árbol.
Miguel
febrero 10, 2012
Grax Me sirvio Bastante!!!
House
julio 19, 2012
Y si el exponente es negativo????