Funciones recursivas en C++... ejemplo sencillo de recursión.
En anteriores entradas del blog hable sobre las funciones en C++, pero en esta ocasion vamos a tratar un caso especial, cuando la funcion es recursiva. ¿Que es una función recursiva?, es aquella que se llama asi misma, esto con el fin de poder realizar la tarea para la cual fue llamada. Para entenderlo mejor voy a poner un ejemplo:
Este un programa en C++, que calcula el factorial de un numero(n!) en un rango de 0-15, para resolver este problema, vamos a hacer uso de una funcion recursiva llamada factorial. Este es el codigo:
#include <iostream>
#include <iomanip>
using namespace std;
unsigned long factorial(unsigned long); // prototipo de funcion, utilice unsigned long
//porque el factorial crece muy rápido!
int main()
{
// calcula factorial 0-15
#include <iomanip>
using namespace std;
unsigned long factorial(unsigned long); // prototipo de funcion, utilice unsigned long
//porque el factorial crece muy rápido!
int main()
{
// calcula factorial 0-15
for(int i=0;i<=15;i++)
{
cout<<setw(2)<<i<<"! = "<<factorial(i)<<endl; // imprimo el numero de iteracion
} //y el valor del factorial, con la llamada a la funcion.
return 0;
}
unsigned long factorial(unsigned long numero) // La definicion de la funcion
{
if (numero<=1) // esta condicion es para los casos 0! y 1! que como sabemos son igual a 1.
return 1;
else
return numero*factorial(numero-1); // aqui la recursion es evidente pues dentro de la misma funcion
} // hacemos otro llamado, hasta que la condicion del if se cumpla.
{
cout<<setw(2)<<i<<"! = "<<factorial(i)<<endl; // imprimo el numero de iteracion
} //y el valor del factorial, con la llamada a la funcion.
return 0;
}
unsigned long factorial(unsigned long numero) // La definicion de la funcion
{
if (numero<=1) // esta condicion es para los casos 0! y 1! que como sabemos son igual a 1.
return 1;
else
return numero*factorial(numero-1); // aqui la recursion es evidente pues dentro de la misma funcion
} // hacemos otro llamado, hasta que la condicion del if se cumpla.
Como podemos ver es realmente sencillo, utilizar funciones recursivas, al menos para este caso. Cabe destacar tambien, que la expresion numero*factorial(numero-1) , es lo mismo que la expresion matematica : n * (n-1)! , por ejemplo si quisiera calcular 7!, la funcion descompone esa expresion en esta: 7 *6!, y asi sucesivamente, hasta que la condicion de que numero<=1 se cumpla y de esta manera poder salir de la recursión. Por ultimo destacar que el concepto de recursividad en C++, va muy ligado al de Pila de ejecucion (que ya vimos y que puedes leer AQUI), ya que si una funcion recursiva no esta bien estructurada para que en algun momento concluya , puede haber una recursion infinita y un seguro problema de desbordamiento. Bueno espero que este sencillo ejemplo te haya servido para entender como se manejan las funciones recursivas en C++, hasta la próxima.
How to make money at casinos using a cryptocurrency, how it works
ResponderEliminar› casino-how-to-make-money- › 논산 출장마사지 casino-how-to-make-money- Oct 1, 2021 밀양 출장마사지 — Oct 1, 2021 One of the biggest advantages of cryptocurrency betting is that you can wager on your real money bet using Bitcoin. You need 이천 출장마사지 to have a lot of หารายได้เสริม confidence in the 강원도 출장샵