Laboratorio N 3 Sis
Laboratorio N 3 Sis
Laboratorio N 3 Sis
FUNCIONES RECURSIVIDAD
2.SINTAXIS.-
tipo dato nombre (tipo1 arg1,tipo2 arg2,...,tipon arg n)
{
Accion1;
Accion2;
...
Accion N
}
Donde arg1 es el nombre de una variable
Partes de la recursión
2 parte recursiva:
Relaciona el resultado del algoritmo con resultados de casos más simples. Se hacen nuevas
llamadas a la función, pero están más próximas al caso base.
Los algoritmos recursivos son más simples y compactos que sus correspondientes iterativos,
sin embargo su ejecución en una computadora es más lenta y requiere más recursos.
Tipos de Recursión
Recursividad simple: Aquella en cuya definición sólo aparece una llamada recursiva. Se puede
cambiar a una función con ciclo iterativo.
Recursividad múltiple: Se da cuando hay más de una llamada a sí misma dentro del cuerpo de
la función
Tipos ...
Recursividad anidada: En algunos de los argumentos de la llamada recursiva hay una nueva
llamada a sí misma.
Recursividad cruzada o indirecta: Son algoritmos donde una función provoca una llamada a sí
misma de forma indirecta, a través de otras funciones.
#include<iostream>
int binario(int n)
{
if(n>1) binario (n/2);
cout<<n%2;
}
int main(void)
{
int nro;
cout<<" Convertir a binario un numero decimal
"<<endl<<endl;
do
{
cout<<" INGRESE NUMERO DECIMAL: ";
cin>>nro;
if(nro<0) cout<<"\n INGRESE UN NUMERO ENTERO Y POSITIVO...
\n";
}while (nro<0);
cout<<endl;
cout<<"\n Numero:"<<nro<<endl;
cout<<"\n Binario:";
binario(nro);
return 0;
}
Problemas Propuestos:
1. Hacer una función recursiva para encontrar la potencia de un número entero positivo
elevado a otro número entero positivo
#include <iostream>
cout << "La potencia de " << base << " ^ " << exp << " es
= " << res;
return 1;
}
float potencia(float base, int exp)
{
float res;
if (exp == 0)
res=1.0;
else if (exp > 0)
{
///Llamada a la función con parámetros adecuados
res=base * potencia(base,exp - 1);
}
else if (exp < 0)
{
///Llamada a la función con parámetros adecuados
res= 1.0 / base *potencia(base,exp + 1);
}
return res;
}
#include<iostream>
using namespace std;
if(n < 2)
return n;