# [c++] Ackermann Funktion - Stack Überlauf



## MrPayne (19. Januar 2005)

Ich habe die Ackermann Funktion in C++ so programmiert:

```
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?


----------



## RedWing (19. Januar 2005)

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


----------



## MrPayne (19. Januar 2005)

Schade...  Trotzdem Danke


----------

