Ejemplo de función potencia iterativa y recursiva

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

12 comentario en este artículoDeje el suyo
  1. No habría estado de más un análisis de complejidad… xD

  2. baaa no sirve para nada okey pongan algo que sirva no esa estupides

  3. 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

  4. 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”.

  5. A mi si me ha servido para comprender un poco mas la recursividad.

    ¡¡¡Muchas gracias!!!

  6. 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

  7. 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! :D

  8. 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

  9. 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

  10. 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.

  11. Grax Me sirvio Bastante!!!

  12. Y si el exponente es negativo????

Deje su comentario

Por favor, ingrese su nombre

Por favor, ingrese un correo-e válido

Por favor, ingrese su mensaje

luauf.com 2013

WordPress