• Blog
  • Acerca
  • Autor
  • Contacto
  • Recursividad aplicada: Factorial

    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).

    1. n=3 No entra al caso base. Guardamos para después la operación 3 * factorial(2)
    2. n=2 No entra al caso base. Guardamos para después la operación 2 * factorial(1)
    3. n=1 Entra al caso base. Retorna 1, por lo tanto factorial(1) = 1
    4. Hacemos la última operación que guardamos 2 * factorial(1) = 2 * 1 = 2, por lo tanto factorial(2) = 2
    5. Hacemos la siguiente operación que guardamos 3 * factorial(2) = 3 * 2 = 6
    6. El factorial es 6

    ¡Uh que fácil!

    1. Rodrigo dice:

      se puede hacer con un For e if?

    2. rodrigo dice:

      muchas gracias!

    3. jose dice:

      ya lo puse en dev c++
      corre pero ingreso un numero
      al darle enter se quita
      solucion a ese problema?

    4. zulee'duran dice:

      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

    5. antonio dice:

      no podrias subirlo con wile?’

    6. pzzz mui bien el programa solo le falta la libreria
      #include

    7. hector luis dice:

      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

    1. [...] vimos como calcular el factorial de un número c++ en forma recursiva, sin embargo hay una forma mucho mas fácil de entender y de aplicar (pero menos eficiente). Vamos [...]

    2. [...] 1. La primera función es para obtener el factorial de forma recursiva. [...]

    Hola, escribe aquí tu comentario: