Beruflich Dokumente
Kultur Dokumente
Algoritmos Recursivos
Luis Garrido
Introduccin
es un nmero Natural
El
Algoritmos Recursivos
Por lo tanto
Hay que incluir por lo menos un caso base, que se resuelva sin
necesidad de recursividad.
Algoritmos Recursivos
El caso base
Funcionamiento de la recursividad
Ntese que en una funcin recursiva es
necesaria una condicin para distinguir el caso
base del inductivo.
Para entender como funciona la recursividad
es necesario tener bien claro que en memoria
no existe una sola versin de la funcin
recursiva.
Cada vez que se invoque la funcin recursiva
se crea una nueva versin de la misma.
La estructura de todas la versiones es la
misma, pero no as los datos que contiene
cada una
Factorial de un nmero
Caso base: fact(0) = 1
Caso general: fact(n) = fact(n-1)n
Int fact(int n)
{
if n(= =0)
return(1);
else
return(fact(n-1)*n)
}
7
Funcionamiento de la recursividad
Main
n=3
Factorial
n=2
Factorial
n=1
Factorial
Devuelve 2*3 = 6
Factorial(2)*3
Devuelve 1*2 = 2
Factorial(1)*2
IDA VUELTA
Llamada
Valor
1
2
3
4 caso base
3
2
1
0
6
2
1
1
Devuelve 1*1 = 1
Factorial(0)*1
n=0
Factorial
Devuelve 1
8
Funcionamiento de la recursividad
Correctitud en la recursividad
10
1.
2.
11
3.
12
4.
13
Simulacin de la recursividad
Aplicaciones de Recursividad
Torres de Hanoi
Poste
auxilia
r
18
Mover n discos
Mover los n-1 discos superiores de A a B.
Mover el disco n de A a C.
Mover los n-1 discos de B a C.
La
condicin de terminacin es
que el nmero de discos sea 1.
Cada
}
}
21