Documentos de Académico
Documentos de Profesional
Documentos de Cultura
- el N 0 es natural
- El N n es natural si n-1 lo es.
Naturaleza de la recursividad
Un objeto es recursivo si figura en su propia definicin
Ej:
1 para N = 0
1) N! =
N(N-1)! para N > 0
1 si N = N = 1
2) fibonacci(N) =
fibonacci(N-1)+ fibonacci(N-2) si N > 1
Caracterstica de la recursividad
Siempre existe una forma de salir de la definicin.
Una llamada a s mismo (recursiva); normalmente con el valor de los parmetros que
cambian en cada llamada. Relaciona el resultado del algoritmo con resultados de casos
ms simples. Se hacen nuevas llamadas a la funcin, pero estn ms prximas al caso
base.
EJEMPLO
ITERATIVO:
int factorial( int n )
{
int res=1;
for(int i=1; i<=n; i++ )
res = res*i;
return(res);
}
RECURSIVO:
int factorial( int n )
{
if(n==0) return(1);
return(n*Factorial(n-1));
}
TIPOS DE RECURSIN
Recursividad directa
LA PILA DE RECURSIN
La memoria del ordenador se divide (de manera lgica, no fsica) en varios segmentos
(4):
En el caso recursivo, cada llamada genera un nuevo ejemplar de la funcin con sus
correspondientes objetos locales:
EJERCICIOS
a). Torres de Hanoi: Problema de solucin recursiva, consiste en mover todos los
discos (de diferentes tamaos) de una aguja a otra, usando una aguja auxiliar, y
sabiendo que un disco no puede estar sobre otro menor que ste.
_|_ | |
[___] | |
[_____] | |
[ ] | |
-------------------------------------
A B C
/* Solucion:
1- Mover n-1 discos de A a B
2- Mover 1 disco de A a C
3- Mover n-1 discos de B a C
*/
void Hanoi( n, inicial, aux, final )
{
if( n>0 )
{
Hanoi(n-1, inicial, final, aux );
printf("Mover %d de %c a %c", n, inicial, final );
Hanoi(n-1, aux, inicial, final );
}
}
Referencia:
http://www.cursopolis.com/visitarenlace.php?lid=135