Professional Documents
Culture Documents
Bic01g Lec13 v3 230703223004 0f05b68e
Bic01g Lec13 v3 230703223004 0f05b68e
Clase 13
TEMAS DE LA LECCIÓN
● Definicion
● Ejemplos
Introducción a las funciones recursivas
DEFINICIÓN
● Una función recursiva es una función que se llama a si
misma
Programa principal main()
Funcion_5()
Funcion_4()
(recursiva)
Introducción a las funciones recursivas
DEFINICIÓN
● Una función recursiva es una función que se llama a si
misma
Introducción a las funciones recursivas
DEFINICIÓN: Recursividad
● Una función recursiva sigue la estrategia del “divide y
vencerás”, dividiendo la definición de la misma en dos
partes:
DEFINICIÓN: Recursividad
● Una función recursiva sigue la estrategia del “divide y
vencerás”, dividiendo la definición de la misma en dos
partes:
data[5]={10,20,30,40,60};
sumArrayPublic(data,5) = data[4]+ sumArrayPublic(data,4);
sumArrayPublic(data,4) = data[3]+ sumArrayPublic(data,3);
sumArrayPublic(data,3) = data[2]+ sumArrayPublic(data,2);
sumArrayPublic(data,2) = data[1]+ sumArrayPublic(data,1);
sumArrayPublic(data,1) = data[0]
Introducción a las
funciones recursivas
Ejemplo
● Un contador recursivo
Ejemplo
● Un contador recursivo
Introducción a las funciones recursivas
Ejemplo
● Calcular la potencia
#include <iostream>
Ejemplo using namespace std;
int fib(int n) {
● fib(n) = fib(n-1)+fib(n-2) if (n == 0 || n == 1) {
return 1;
se puede expresar
} else {
fácilmente con una return fib(n-2) + fib(n-1);
implementación recursiva. }
}
int main(){
int Numero, Fib;
for (Numero = 20; Numero >= 0; Numero--){
Fib= fib(Numero);
cout<<"Numero=:"<<Numero << "\tFib: " << Fib << endl ;
}
Return 0;
}
Introducción a las funciones recursivas
#include <iostream>
Ejemplo using namespace std;
int countfib=0; Variable Global
#include <iostream>
using namespace std;
int fib(int n) {
Dónde se ha declarado countfib++;
if (n == 0 || n == 1) {
una variable, return 1;
accesada desde ;
}
int numCalls = 0;
int numCalls = 0;
acceder a
int base, int exponent, int int max(int num1, int num2) {
result numCalls = numCalls + 1; variables fuera
int result; del ámbito
if (num1 > num2) {
result = num1;
Ambito max() }
else {
result = num2;
int num1, int num2, int result }
// B
return result;
Introducción a las funciones recursivas
Tip de rendimiento:
● Evite los programas recursivos al estilo Fibonacci que produzcan una
“explosión” exponencial de llamadas.
● Las llamadas recursivas requieren tiempo y consumen memoria
Introducción a las funciones recursivas
/***************************************************************
Ejemplo
Invertir una cadena
utilizando recursividad
Introducción a las funciones recursivas
Ejemplo
Invertir una cadena
utilizando recursividad