// Factor. C -- uses loops and Recursion to calculate factorials # include <stdio. h> long fact (int n); long rfact (int n); int main (void) {int num; printf ("this program calculates factorials. \ n "); printf (" enter a value in the range 0-12 (Q to quit): \ n "); While (scanf (" % d ", & num) = 1) {If (Num <0) printf ("no negative numbers, please. \ n "); else if (Num> 12) printf (" Keep input under 13. \ n "); else {printf (" loop: % d factorial = % LD \ n ", num, fact (Num); printf (" recursion: % d factorial = % LD \ n ", num, rfact (Num);} printf (" enter a value in the range 0-12 (Q to quit ): \ n ");} printf (" Bye. \ n "); Return 0;} long fact (int n) // loop-based function {long ans; For (ANS = 1; n> 1; n --) ans * = N; return ans;} Long rfact (int n) // recursive version {long ans; If (n> 0) ans = N * rfact (n-1 ); else ans = 1; return ans ;}