miércoles, febrero 08, 2006

Lenguajes recursivos

Los lenguajes recursivos son aquellos en los que sus funciones y/o procedimientos pueden llamarse a sí mismos.

Las técnicas que posibilitan soluciones recursivas son muy diferentes a las iterativas o repetitivas.

La recursividad dota de mayor potencia al lenguaje, ya que aunque todas las soluciones recursivas se pueden implementar de forma no recursiva, la recursividad ofrece las siguientes ventajas:
  • Las soluciones recursivas son más fáciles de plantear (hablamos de problemas medianamente complejos como los que plantearé en los próximos días).
  • En problemas no triviales, la solución tiene menos líneas de código.

Como ejemplo, este programa sirve para calcular el valor de un elemento de la serie de Fibonacci. Por supuesto, se hace uso de la recursividad:



program fibonacci_recursivo;
uses crt;
var numero:longint;
function calculaFibonacci(num:longint):longint;
begin
if (num=1) or (num=2) then calculaFibonacci:=1
else calculaFibonacci:=calculaFibonacci(num-1) + calculaFibonacci(num-2);
end;

begin
clrscr;
writeln('Fibonacci recursivo');
write('Introduce un n£mero: ');
readln(numero);
writeln(calculaFibonacci(numero));
readln;
end.

No hay comentarios: