| recursion/alternative-fak-1.c - En variation af den rekursive fakultetsfunktionen - ala iteration nu med halerekursion. | Lektion 11 - slide 10 : 27 Program 4 |
#include <stdio.h>
// Prototype
unsigned long int iterative_factorial(unsigned int n,
unsigned int i,
unsigned long int result);
unsigned long int factorial(unsigned int n){
return iterative_factorial(n, 1, 1);
}
unsigned long int iterative_factorial(unsigned int n,
unsigned int i,
unsigned long int result){
if (i <= n)
return iterative_factorial(n, i + 1, result * i);
else
return result;
}
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));
return 0;
}