Einzelnen Beitrag anzeigen

Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#5
  Alt 27. Mär 2003, 11:36
Hi,

anscheinend hat er recht, denn das gleiche Problem tritt auch bei mir auf:

Delphi-Quellcode:
function TForm1.ack(x,y : integer) : Integer;
begin
{ Die Ackermann - Definition:

                    [ y + 1              wenn x = 0;
      A(  x,  y) =  [ A( x-1 ,1)        wenn y = 0;
                    [ A( x-1, A(x, y-1)  in jedem anderen Fall;

}

    if (x <> 0) and (y <> 0) then
      result := ack(x-1, ack(x,y-1))
    else
      if (y = 0) then
         result := ack(x-1, 1)
      else
         result := y+1;
end;
Die Definition kommt von http://www.loisch.de/, findet sich so aber auch an mehreren anderen Stellen.

Wird nun Ack(0,0) aufgerufen, sprich: rutscht in Folge davon dann x ins Negative, haben wir eine unendlich Rekursion. Oder widerlegt mir das ein Mathematiker?

Auf jeden Fall führt eine unendliche Rekursion zu einem Stack-Overflow, und der lässt sich hier nicht wirklich vermeiden, oder?

Edit: Text etwas umformuliert um's verständlich zu machen
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat