[c++] Ackermann Funktion - Stack Überlauf

MrPayne

Grünschnabel
Ich habe die Ackermann Funktion in C++ so programmiert:
Code:
int Tackform::ack(int n, int m)
{
  if (n == 0)
    {
      return (m + 1);
    }
  else if (m == 0)
    {
      return ack((n - 1), 1);
    }
  else
    {
      return ack(n - 1, (ack(n, (m - 1))));
    }
}

Funktioniert soweit ganz gut, allerdings kommt schon bei ack(4, 1) ein Stack Überlauf. Kann man das irgendwie so programmieren, dass es auch für größere Zahlen funktioniert?
 
Mhm,
sieht schlecht aus:

Funktionswert a(4,2)

Es sei noch festgehalten, dass der Funktionswert a(4,2), der in Form einer 19727-stelligen Dezimalzahl auf verschiedenen Internetseiten auftaucht, wahrscheinlich nicht mit der rekursiven Definition der Ackermannfunktion praktisch berechnet werden kann, weil dafür bei weitem zu viel Speicherplatz für die Zwischenergebnisse benötigt würde.

Siehe dazu auch:

http://de.wikipedia.org/wiki/Ackermannfunktion

Gruß

RedWing
 
Zurück