Home > Programación > Recursividad

Recursividad

En esta ocasión abordaremos el tema de la recursividad.

Por definición: La recursividad es aquella propiedad que posee una función por la cual dicha función puede llamarse a sí misma.  Se puede utilizar la recursividad como una alternativa a la iteración.  Una solución recursiva es normalmente menos eficiente en términos de tiempo de computadora que una solución iterativa debido a las operaciones auxiliares que llevan consigo las llamadas suplementarias a las funciones; sin embargo, en muchas circunstancias el uso de la recursión permite a los programadores especificar soluciones naturales, sencillas, que serían, en caso contrario difíciles de resolver.  Por esta causa, la recursión es una herramienta poderosa e importante en la resolución de problemas y en programación.

Para ejemplificar esto mejor, vámos poniendo manos a la obra y echemos mano del clásico ejemplo del factorial:

El factorial de un número entero negativo n, escrito n! (Y se pronuncia n factorial), es el producto:

 n! = n * (n - 1) * (n - 2), . . . . . , 1 

en el cual:

0! = 1

1! = 1

2! = 2 * 1

3! = 3 * 2 * 1

. . .

de modo que una función recursiva del método factorial n es :

n! = n * (n – 1)!

Ahora pensando en un algoritmo que nos ayude a resolver esta sencilla formula tenemos lo siguiente:

factorial = 1;

for (contador = n; contador >=1; contador –)

factorial *= contador;

Como esta es una función que implementamos, vamos a mandar llamar la función solicitando que nos retorne el resultado:

 return (factorial) 

De alguna manera, el algoritmo debe tener una condición de salida, así que implementamos el siguiente código:

 {

if (n==0)

return 1;

else

return n * factorial (n - 1);

}

Y vualá, tenemos nuestra función terminada.

Definición obtenida del libro: Algoritmo y estructuras de datos de Luis Joyanes Aguilar y Ignacio Zahonero Martínez

Post to Twitter

  1. August 31st, 2009 at 21:50 | #1

    Muy buena explicación. Solo faltaría, para mi gusto muy personal, ejemplos de recursividad con una aplicación completa.

    Gracias. Voy a conservar este enlace para decirle a mis alumnos que lo chequen cuando lleguemos a este tema.

    ¡Saludos!

  2. EigenVector
    October 28th, 2009 at 10:29 | #2

    Muchas gracias, muy buen post!

  1. No trackbacks yet.

Spam Protection by WP-SpamFree

Switch to our mobile site