unsigned int iterative_ackermann(unsigned int m, unsigned int n) { while (m != 0) { if (n == 0) { n = 1; } else { n = iterative_ackermann(m, n - 1); } m--; } return n + 1; }
int main(int argc, char* argv[]) { unsigned int m, n, result; m = (unsigned)atoi(argv[1]); n = (unsigned)atoi(argv[2]); calls = 0; result = naive_ackermann(m, n); printf("Naive: %u (%u calls)\n", result, calls); calls = 0; result = iterative_ackermann(m, n); printf("Iterative: %u (%u calls)\n", result, calls); calls = 0; result = formula_ackermann(m, n); printf("Formula: %u (%u calls)\n", result, calls); return 0; }
int main() { printf("%p\n", iterative_ackermann); printf("%d\n", iterative_ackermann(4,1)); return 0; }