Funkcja Ackermanna jest definiowana rekurencyjnie za pomocą następujących równości:
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.
Już napisałam program (potrzebny w języku C) , który oblicza wartość tej funcji dla podanych m in , ale nie działa mi w CodeBlocks. Może popełniłam gdzieś błąd? Proszę o sprawdzenie tego.
Oto program:
#include
int ack (int m, int n) {
if (m==0) return n+1;
if (n==0) && (m>0) return ack(m-1, 1);
else return ack(m-1, ack(m, n-1)); }
int main () {
printf("Wprowadz liczby naturalne m oraz n", m, n); scanf("5d %d", &m, &n);