#include #include #include #include uintmax_t factorial(uintmax_t n) { if(n < 2) return 1; return n * factorial(n-1); } uintmax_t factorial_iter(uintmax_t n) { uintmax_t fact = 1; uintmax_t i = 2; while(i <= n) { fact *= i; i++; } return fact; } int main(void) { size_t bufsize = 1024; char *lineptr = calloc(bufsize, sizeof(char)); fputs("Enter number to factor: ", stdout); int err = getline(&lineptr, &bufsize, stdin); if(err == -1) { fputs("Error reading line from user input\n", stderr); free(lineptr); return 1; } uintmax_t user_input = abs(atoi(lineptr)); free(lineptr); printf("\nRecursive factorial for number: %ju\n", factorial(user_input)); printf("Iterative factorial for number: %ju\n", factorial_iter(user_input)); return 0; }