lunes, 20 de septiembre de 2010

~Recursión


Materia: Laboratorio de Lenguajes de Programación
Hora: Jueves V1

Hola a todos, en esta entrada les hablaré un poco hacerca de recursión. En términos de programación, la recursión se refiere a llamar a una función a través de esa misma función.

Un algoritmo recursivo es un algoritmo que obtiene la solución mediante la llamada de una función a si misma. Este procedimiento de llamarse a si mismo se llama recursión.

Una forma de simplificar un problema de recursión es dividirlo en problemas más chiquitos, o bien en subproblemas. Este método en programación se llama "Divide y vencerás", de esta técnica hable un poco en la entrada anterior de la presentación de Ordenamiento por mezcla.

Al dividir el problema principal en subproblemas, estos subproblemas tienen que reducirse hasta llegar al caso base.

Algunos ejemplos de recursión son: quicksort, ordenamiento por mezcla, torres de hanoi, búsqueda binaria, factorial, etc.


FACTORIAL


n!=
\begin{cases} 
\mbox{si }n=0 & \Rightarrow 1 \\ 
\mbox{si }n \geqslant 1 & \Rightarrow (n-1)! \cdot n
\end{cases}

Les dejo el código de factorial en c.

#include  


int main(void){
int numero;

printf("Dime un numero: ");
scanf("%d", &numero);
printf("El factorial de %d es: %d", numero, fact(numero));
}

int fact(numero) {
if (numero == 0) {
        return 1;
        }
/*Regresa el factorial del numero que introduciste*/
        else {
        return numero * fact(numero - 1);
        }
}

Este programa lo que hace es que mediante la recursividad te calcula el factorial del número que tu introduces.


Bueno para terminar busqué videos acerca del tema para que les ayudaran por si no entienden recursión y me encontré con un video que representan los algoritmos recursivos de una manera muy clara y entendible. Aquí les dejo el video por si les interesa verlo, es un ejemplo sencillo.



Referencia

3 comentarios:

  1. Carmen faltó incluir las librerias en el código en C

    SALUDOS :D

    ResponderEliminar
  2. gracias sandra, no me habia dado cuenta :)

    ResponderEliminar
  3. Muy bien. Te pongo siete puntos en el laboratorio por esta entrada.

    ResponderEliminar