Dlaczego nie działa mi ten program w języku C, gdy wprowadzam np. m = 4, n = 0 (i większe liczby)? Czy mógłby ktoś odnależć błąd?
Funkcja Ackermanna jest definiowana rekurencyjnie:
n+1, jeżeli m = 0; A(m-1, 1), jeżeli m>0, n=0; A(m-1, A(m, n-1)), jeżeli m>0, n>0.
#include #include int ack(int, int); int main() { int m, n, wartosc; printf("Wprowadz 2 liczby: \n", m, n); scanf("%d %d", &m, &n); if (m < 0 || n < 0) printf("Funkcja nie egzystuje\n"); } else { wartosc = ack(m, n); printf("Wartosc funkcji jest : %d\n", reiksme); } return 0; } int ack(int m, int n) { if (m == 0) return n+1; else if (m > 0 && n == 0) return ack(m-1, 1); else if (m > 0 && n > 0) return ack(m-1, ack(m, n-1)); }