![]() ![]() | recursion/fak-1-side-by-side.c - Den rekursive og den halerekursive fakultetsfunktion - side om side. | Lektion 11 - slide 10 : 27 Program 5 |
#include <stdio.h> // Prototype unsigned long int it_fac(unsigned int n, unsigned int i, unsigned long int result); unsigned long int factorial(unsigned int n){ return it_fac(n, 1, 1); } unsigned long int it_fac(unsigned int n, unsigned int i, unsigned long int result){ if (i <= n) return it_fac(n, i + 1, result * i); else return result; } unsigned long int fac(unsigned int n){ if (n == 0) return 1; else return n * fac(n - 1); } int main(void) { unsigned int k; // Upper limits of k: 12 (long is 4 bytes) // Upper limits of k: 20 (long is 8 bytes) for (k = 0; k <= 12; k++){ printf("%-20lu %20lu\n", k, factorial(k)); printf("%-20lu %20lu\n", k, fac(k)); } return 0; }