Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ADMINISTRACIÓN BÁSICA
El caso base
La estructura recursiva
Caso base
La estructura recursiva
Ejemplo:
1
Donde podríamos decir que:
5! = 4!
factorial(N)=N*factorial(N-1)
factorial(N)=N*factorial(N-1) si N>0
Caso Recursivo
2
no depende de ningún factorial de ningún numero mas pequeño que cero (0),
es simplemente uno (1) asi conseguimos un final para la recursión, si todos los
números de un factorial dependiendo de los factoriales anteriores siempre
vamos hacia atrás pero cuando llegamos al factorial de cero cortamos ese
camino.
factorial(N)=1 si N=0
Caso Base
def factorial(n):
if n=0:
return 1
else:
return n * factorial(n-1)
3
Regiones de memoria que distingue el sistema operativo.
Aplicación
Utilidad:
4
Pensar en la recursividad es más natural en algunos casos. La
recursividad es posiblemente la forma más directa y transparente de resolver
problemas de estructura de datos, por ejemplo, árboles con estructuras
recursivas simples.
Ventajas.
Desventajas.
5
o Esto implica un mayor tiempo de ejecución, sobre todo si hay
muchas llamadas anidadas, algo normal en programas recursivos.
6
Otro ejemplo clásico es: Las Torres de Hanoi
Mover N discos del pilar A al pilar C: Mover N‐1 discos del pilar A al pilar
B Mover el disco del pilar A al pilar C Mover N‐1 discos del pilar B al pilar C
7
Para llevar N discos de un pilar origen a otro destino se usa el tercero
como auxiliar
Mover N‐1 discos del origen al auxiliar Mover el disco del origen al
destino Mover N‐1 discos del auxiliar al destino
Mover N‐1 discos se hace igual, pero usando ahora otros origen y
destino
Mover N‐1 discos del pilar A al pilar B: Mover N‐2 discos del pilar A al
pilar C Mover el disco del pilar A al pilar B Mover N‐2 discos del pilar C al pilar
B
8
Caso base: no quedan discos que mover
int main() {
int n;
cout << "Número de torres: ";
cin >> n;
hanoi(n, 'A', 'C', 'B');
return 0;
}