RECURSIVIDAD -lógica de programación- | Page 2

Un algoritmo recursivo

es un algoritmo que expresa la solución de un problema en términos de

una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente.

#include <iostream>

#include <cstdlib>

using namespace std;

int Factorial(int n);

int main(){

int valor;

system("clear");

cout << "Introduzca numero a calcular: ";

cin >> valor;

cout << "\nEl Factorial de " << valor << " es: " << Factorial(valor) << endl;

return 0;

}

int Factorial(int n){

if (n < 0){

cout << “No existe el factorial de un numero negativo.\n”;

}else if(n < 2){

return 1;

}else

return n * Factorial(n-1);

}

Generalmente, si la primera llamada al subprograma se plantea sobre un problema de tamaño u

orden N, cada nueva ejecución recurrente del mismo se planteará sobre problemas, de igual

naturaleza que el original, pero de un tamaño menor que N. De esta forma, al ir reduciendo

progresivamente la complejidad del problema a resolver, llegará un momento en que su resolución

sea más o menos trivial (o, al menos, suficientemente manejable como para resolverlo de forma no

recursiva). En esa situación diremos que estamos ante un caso base de la recursividad.

Es frecuente que los algoritmos recurrentes sean más ineficientes en tiempo que los iterativos

aunque suelen ser mucho más breves en espacio