Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Se dice que una función está definida recursivamente si su FUNCTION Factorial (n : integer) : integer;
definición consta de dos partes: BEGIN
1. Un caso base, en el cual se especifica el valor de la IF n = 0 THEN {Caso base }
función para uno o más valores del dominio de la Factorial := 1
función ELSE {caso recursivo }
2. Un paso inductivo o recursivo, en el cual el valor Factorial := n * Factorial(n-1)
de la función se define en términos de los valores END;
de la función definidos previamente
n Factorial := n * Factorial(n-1)
Ejemplo: La función factorial 5 := 5 * Factorial(4) Caso recursivo
Caso base : 0! = 1
n Factorial := n * Factorial(n-1)
Caso recursivo : n! = n * (n-1)! Para n>0
4 := 4 * Factorial(3) Caso recursivo
5! = 5 * 4!
n Factorial := n * Factorial(n-1)
↓
4! = 4 * 3! 3 := 3 * Factorial(2) Caso recursivo
↓ n Factorial := n * Factorial(n-1)
3! = 3 * 2! 2 := 2 * Factorial(1) Caso recursivo
↓
n Factorial := n * Factorial(n-1)
2! = 2 * 1!
1 := 1 * Factorial(0) Caso recursivo
↓
1! = 1 * 0! = 1 * 1 n Factorial := 1
↓ ↑ 0 1 Caso base
0! = 1 Versión iterativa:
La recursión es la facilidad proporcionada por algunos FUNCTION Factorial (n : integer) : integer;
lenguajes de programación para que un subprograma se VAR Fact : integer; i : integer;
BEGIN
llame a si mismo.
Fact := 1;
El sistema gestiona automáticamente el almacenamiento FOR i := 2 TO n DO
de los entornos de ejecución de cada una de las llamadas Fact := i * Fact;
al subprograma. Factorial := Fact
Las funciones recursivas se implementan mediante END;
subprogramas recursivos.
Introducción a la programación Introducción a la programación
Tema 8. Introducción a la recursión Tema 8. Introducción a la recursión
Grupo A. Prof. Isabel Pita Grupo A. Prof. Isabel Pita
INCONVENIENTES
• La ejecución puede resultar poco eficiente
Ejemplo : La sucesión de Fibonacci se define como
Fib(0) = 1;
Fib(1) = 1;
Fib(n) = Fib(n-1) + Fib(n-2)
Algoritmo recursivo para calcular el n-esimo término de la
sucesión
FUNCTION Fib (n : integer) : integer;
BEGIN
IF (n = 0) OR (n = 1) THEN Fib := 1
ELSE Fib := Fib(n-1) + Fib(n-2)
END;
Fib(4)
Fib(3) Fib(2)
Fib(1) Fib(0)
Introducción a la programación
Tema 8. Introducción a la recursión
Grupo A. Prof. Isabel Pita