Hola de nuevo, ¿cuánto tiempo pasó? mmm no sé pero bueno… lo importante es que ya estoy de vuelta y ahora sà me voy a dar el tiempo de actualizar este blog más seguido, pero basta de cosas personales.
No me quiero meter en rollos de explicar lo que es la recursividad (googleen y diviértanse leyendo), lo que quiero es mostrarles algunos ejemplos muy sencillos de dónde podemos aplicar la recursividad. Hoy toca calcular el factorial de un numero de forma recursiva.
Es el código recursivo más fácil que se pueden encontrar:
#include<stdio.h> int factorial(int n) { if(n<2) return 1; else return n * factorial(n-1); } int main() { int num=0; printf("::CALCULAR FACTORIAL::\n"); printf("Introduce un numero: ");scanf("%i",&num); //Pedir variable num printf("\tEl resultado es: %i\n", factorial(num)); //Llama la funcion e imprime resultado return 0; }
Explicación
El caso base es que cuando n valga 1 o 0 retorna un 1, de lo contrario retorna la multiplicación de n * el factorial del numero anterior n-1. Supongamos que introducimos el número 3, cuyo factorial es 6 (3*2*1 = 6).
- n=3 No entra al caso base. Guardamos para después la operación 3 * factorial(2)
- n=2 No entra al caso base. Guardamos para después la operación 2 * factorial(1)
- n=1 Entra al caso base. Retorna 1, por lo tanto factorial(1) = 1
- Hacemos la última operación que guardamos 2 * factorial(1) = 2 * 1 = 2, por lo tanto factorial(2) = 2
- Hacemos la siguiente operación que guardamos 3 * factorial(2) = 3 * 2 = 6
- El factorial es 6
¡Uh que fácil!
se puede hacer con un For e if?
Si, de hecho te voy a responder con un nuevo post. Espéralo
muchas gracias!
ya lo puse en dev c++
corre pero ingreso un numero
al darle enter se quita
solucion a ese problema?
lo que pasa es que tu compilador no se pausa automáticamente. Pon antes de la llave de cierre del main esto: cin.get();cin.get();
Asà doble, es como un getch();
puse cin.get();cin.get();
antes de la llave de cierre y aun asi me marca errror puedes poner el codigo completo te lo agradeceria
Oh es cierto, perdón. Para usar cin.get(); debes incluir la librerÃa iostream. Agrega esto después de la primera librerÃa:
#include<iostream>using namespace std;
no podrias subirlo con wile?’
pzzz mui bien el programa solo le falta la libreria
#include
hola mira la verdad es q tengo q aser un programa igual pero ya puse todo si me corre pero si el profr me pied una explicacion de donde saq el cin.get();cin.get(); q le puedeo decir