#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) { puts("Error reading line from user input"); return 1; } uintmax_t user_input = abs(atoi(*lineptr)); printf("\nRecursive factorial for number: %ju\n", factorial(user_input)); printf("Iterative factorial for number: %ju\n", factorial_iter(user_input)); free(lineptr); return 0; }