AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Un/gerade - Indirekte Rekursion

Ein Thema von n00b_on_knees · begonnen am 1. Nov 2003 · letzter Beitrag vom 1. Nov 2003
 
tommie-lie
(Gast)

n/a Beiträge
 
#10

Re: Un/gerade - Indirekte Rekursion

  Alt 1. Nov 2003, 19:24
Zitat von axelf98:
Der Stacküberlauf hängt mit dem pred(x) zusammen:
Immer, wenn die Zahl nicht gerade ist, wird geprüft ob sie ungerade ist. Aber sie wird zuvor durch pred(x) wieder gerade gemacht, und deshalb hat man immer genau die falsche Zahl in der Abfrage und die Gehschichte geht ins unendliche...
Irgendwie scheinst du da was überlesen zu haben...
Die Zahl 43 wird an even übergeben. 43 mod 2 ist nicht 0, also wird der Vorgänger von 43 (42) an odd übergeben. Dort wird abgefragt, ob 42 mod 2 gleich 0 ist, und das ist der Fall, die Rekursion hört auf. Der Stacküberlauf tritt nur dann ein, wenn in einer Funktion "x mod 2 = 0" und in der anderen "x mod 2 <> 0" abgefragt wird, oder wenn in beiden "x mod 2 = 0" abgefragt wird, aber nicht pred benutzt wird.
So, wie n00b_on_knees' Funktionen vorher waren, hatte das mit dem pred absolut seine Richtigkeit, nur die Ausgabe war nicht ganz korrekt...
Das, was du an Code gepostet hast, ist von der Funktionsweise her identisch mit n00b_on_knees' Code, du hast nur pred ganz rausgelassen und in beiden Funktionen verschiedene Abfragen.


Übrigens ist sowas das scheinbar schlechteste Beispiel für indirekte Rekursionen. Die Rekursion ist (bei richtiger Implementierung ) nach maximal zwei Funktionsaufrufen (jeweils ein Aufruf von zwei Funktionen) erledigt, keine der Funktionen wird zweimal aufgerufen, geschweige denn mehrmals.


Und noch einfacher geht's mit der Funktion odd aus der Unit system.pas
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz