Академический Документы
Профессиональный Документы
Культура Документы
f(6)=?
F(6)=6*f(5)
Realizar el procedimiento:
El procedimiento ejecutado es un procedimiento recursivo porque recurre a utilizar la misma
funcion para encontrar el valor de la imagen entonces para buscar x yo llamo a la function n veces
y llegamos a un punto donde ya no se llama a la funcion y este el el punto de control para no
volver a llamar a la funcion.
2.1. Definicin
Un mtodo recursivo es un mtodo que se llama as mismo, ya sea
directa o indirectamente, a travs de otro mtodo.
(Deitel, H. M. & Deitel P. J., 2004)
Un mtodo parcialmente definido en trminos de s mismo, ya sea
directa o indirectamente, a travs de otro mtodo.
(Weiss, M. A)
U2. Recursividad.
2.1. Definicin
SI
Caso base
NO
Parte
recursiva
U2. Recursividad.
2.2. Procedimientos Recursivos
TIPOS:
Recursin simple
Recursin mltiple
Recursin cruzada o indirecta
Recursin anidada
U2. Recursividad.
2.3. Ejemplo de Casos
FACTORIAL
Cmo se calcula el factorial de un nmero?
Ejemplo:
0!, 1!, 2!, 3!, 4!, 5!
U2. Recursividad.
Ejemplo de Casos
Factorial (forma iterativa)
-- Caso Base n
factorial = 1;
factorial =1
-- Parte Recursiva
for (int i =n; i >= 1; i i = n i >=
--) 1
i -- SI
factorial *= i;
factorial *= i
U2. Recursividad.
Ejemplo de Casos
2.3. Ejemplo de Casos
Factorial (forma recursiva)
int factorial (int n){
n
if (n <= 1)
return 1;
else n <= 1
SI
return 1
return (n * factorial ( n-1
)); NO
} return
(n * factorial (n-1))
U2. Recursividad.
FUNCIONES RECURSIVAS
Ciclo del Factorial
Recursivo
FACT FACTORIAL (3)
N es 3
FACTORIAL 3*
FACTORIAL (2)
Retorno 6
N es 2
FACTORIAL 2*
FACTORIAL (1)
Retorno 2
N es 1
FACTORIAL 1*
FACTORIAL (0)
Retorno 1
N es 0
FACTORIAL
1
Retorno 1
FUNCIONES RECURSIVAS vs FUNCIONES ESTANDAR
int suma(int n)
{
if (n == 0)
return 0;
else
return n + suma (n);
}
U2. Recursividad.
Recursividad
Definicin Definition
- Es una Tcnica - Un algoritmo es
que permite que recursivo si al
una funcin se estar encapsulado
llame a si en una funcin es
misma. llamado desde la
misma funcin por
lo menos 1 vez.
Al menos
2 elementos
ITERATIVO:
Es una tcnica potente de programacin que permite
RECURSIVO:
resolver problemas
Int Factorial (int n ) complejos en forma simple elegante y
{ clara.
Int Factorial (int n )
Int , res = 1;
Sin Embargo: {
For(=1;<=n;++
Sera la ultima) solucin
If (n==0) return (1);
a intentar en caso que los
res = procesos Return (n*Factorial (n-1));
res*; iterativos no funcionen.
return (res); }
} El uso de recursividad nicamente cuando no haya
solucin iterativa.
Backtracking = Fuerza Bruta = Vuelta Atras. Divide la solucin en pasos, en cada uno de los
cuales hay una serie de opciones que ha que probar de forma sistemtica. En cada paso se
busca una posibilidad o solucin o solucin aceptable.
Si se encuentra se una solucin valida pasa a decidir el paso siguiente.
Si no se encuentra una solucin aceptable, se retrocede hasta la ltima solucin aceptable
encontrada y se elige una opcin distinta a la anterior. La recursividad se utiliza para poder
retroceder hasta encontrar una solucin aceptable.
Ejemplos: Juegos de tablero, laberintos, etc.
3.1 Definicin de Procesos Recursivos
3. Cmo se usa la solucin del caso base para construir una solucin
Alcanzado el caso base, determinar como ahora lograr la solucin
final.
3.3 Pasos para crear un AR
Escriba un IF
//Caso Base
} else {
// Paso Recursivo
}
Prctica (Equipo)
De los siguientes problemas resueltos de forma iterativa,
encontrar su solucin recursiva mediante codificacin:
1. Fibonacci (n-1) + (n-2)
2. Conversin de un nmero decimal a binario (n/2, n%2)
3. Potencia (base, exponente)
U2. Recursividad.
Prctica (Equipo)
Fibonacci
U2. Recursividad.
Prctica (Equipo)
Elevar a una potencia
U2. Recursividad.
Ventajas
Menos lneas de cdigo.
Refleja el problema con ms naturalidad.
Produce un programa ms fcil de entender y depurar.
U2. Recursividad.
Desventajas
Tiempo de procesador.
Espacio en memoria, consume memoria adicional.
U2. Recursividad.
CONCLUSIONES
Programacin en C 30
Ejemplos de funciones recursivas en C++:
Construya un programar recursivo para indicar si un numero es par o
#include impar
<iostream>
#include <stdio.h>
using namespace std;
int par(int num);
int impar(int num);
main()
{
int num;
cout<<"Ingrese un numero"<<endl;
cin>>num;
if(par(num))
{
cout<<"es par";
}
else
cout<<"Es impar";
}
int par(int num)
{
if(num==0)
return(1);
else
return impar(num-1);
}
int impar(int num)
{
if(num==0)
return 0;
else
return par(num-1);
} Programacin en C 31