//Programa para calcular el factorial de un numero recursivamente,
//con la finalidad de ver la diferencia entre la recursividad final y la no final.
#include <iostream>
using namespace std;
int factorialNoFinal (int num);
int factorialFinal (int num, int fact);
int factorialNoFinal (int num) //recursividad no final
{ //Pre: Verdadero
int fact;
if (num==0) //Caso que 'num' valga 0
fact = 0;
else { //resto de casos de 1 hasta num
if (num==1)
fact = 1;
else
fact = factorialNoFinal(num-1)*num;
} //a medida que vamos volviendos de las llamadas
//recursivas, vamos calculando el factorial
return (fact);
//Post: fact = Producto x:1..num:x
//fact tendra como valor el producto entre los numeros
//existentes entre 1 i 'num'
}
int factorialFinal(int num, int fact) //recursivas final
{ //Pre: Verdadero
if (num==0) //Caso concreto que 'num' valga 0
fact =0;
else { //resto de casos de 1 hasta N
if(num==1)
fact = 1*fact;
else
fact = factorialFinal(num-1,fact*num);
} //cuando volvemos de las llamadas recursivas,
//ya tenemos calculado el factorialFinal
return (fact);
//Post: fact = Producto x:1..num:x
//fact tendra como valor el producto entre los numeros
//existentes entre 1 i 'num'
}
main()
{
int solucioFinal,solucioNoFinal,num;
system ("color F1");
cout << endl <<"Escriba un numero: "<< endl;
cin >> num;
cout << endl;
solucioFinal = factorialFinal(num,1);
solucioNoFinal = factorialNoFinal(num);
cout << "El factorial de " << num << " es: " << endl << endl;
cout <<" "<< "Recursividad Final: "<< solucioFinal << endl;
cout <<" "<< "Recursividad No Final: "<< solucioNoFinal << endl;
return system("pause");
}
To embed this project on your website, copy the following code and paste it into your website's HTML: