
Mauricio Carrasco
PreguntaHe estado probando hasta donde se podia hallar el factorial del programa y descubri que se rompe del factorial de 13 en adelante. ¿Alguien sabe porque pasa esto?
Este es mi codigo
#include <stdio.h> #include <stdlib.h> int resultado_factorial; int factorial(int n) { printf("\nEntra a la funcion factorial, n vale: %i \n", n); if(n > 1) { printf("La funcion se llamara a si misma otra vez\n"); return n * factorial(n -1); } else { printf("Cuando n vale 1 se acaba la recursividad\n"); return 1; } } int main() { printf("Recursividad \n\n"); printf("Calculador de factorial\n\n"); int num; printf("Ingrese el factorial que quiere hallar: "); scanf(" %i", &num); printf("\n\nEXPLICACION DE LA RECURSIVIDAD:\n"); int resultado = factorial(num); printf("\n\nRESULTADO:\n"); printf("\nEl factorial de %i es: %i", num, resultado); printf("\n\n"); printf("FINALIZO EL PROGRAMA"); return 0; }
El resultado de mi codigo con factorial de 13
El resultado real

Ermes David Galvis Rodriguez
si trabajas con tipo de dato double, la función obtendría un rango mas amplio debido a que, double almacena los números en notación científica.

Jorge Cruz Perez
Si habria que usar un long, saludos :)

Patrick Jhonatan Hernandez Blanco
Por el tipo de dato: -32,768 a 32,767 o -2,147,483,648 a 2,147,483,647