Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

pascal und das problem der rekursion bei funktionen





Frage

hallo, ich arbeite mit einer zeigerstruktur und habe eine funktion geschrieben, die das vorkommen eines wertes in eben dieser struktur überprüft. das ist der code [code] function kompExist(komp : integer; KompPointer : TKomppointer) : boolean; var temp : integer; begin temp := KompPointer^.name; if(komp = temp) then begin kompExist := true; end else begin if(KompPointer^.next = nil) then begin kompExist := false; end else begin ## kompExist(komp, KompPointer^.next); //hier ist das problem end; end; end; [/code] so, an der markierten stelle liegt das problem vor. pascal erwartet an dieser stelle eine zuweisung, da es von einem rückgabewert ausgeht, wie jedoch schaffe ich es, dass pascal da die funktion aufruft und keine rückgabe erwartet. vielen dank für eure hilfe

Antwort 1 von Rangoo

Hi,

Pascal erzwingt die Annahme von Rückgaben bei Funktionen. Das ist nicht zu umgehen. Willst du keinen Rückgabewert, musst du eine Prozedur nutzen.

Allerdings habe ich das Gefühl, du hast selbst nicht ganz verstanden, was du mit deiner Rekursion bezweckst.
Ich versuche dir mal aufzuschreiben, was dein Code gerade tut:
Ist der Eintrag gleich dem gesuchten: Gebe "wahr" zurück.
Ist der Eintrag ungleich dem gesuchten:
-> Existiert kein nächster Eintrag: Gebe "falsch" zurück.
-> Existiert ein nächster Eintrag: Gucke nach, welches Ergebnis dieser zurückliefert, ignoriere aber das Ergebnis.

Du hast in der markierten Zeile gleich zwei Probleme:
1. Du fängst den Rückgabewert der Funktion nicht auf.
2. Du weist deiner aktuellen Funktion keinen Rückgabewert zu.

Die beiden Probleme hängen zusammen und lassen sich gleichzeitig lösen. ;-)

Antwort 2 von najaoc

danke,

also die logik des codes stimmt schon, und ich weiß auch, was ich mit der rekursion mache.

ich habs als prozedur geschrieben und einfach in eine andere funktion reingepackt. jetzt läufts wie ich es will.

mfg naja

Antwort 3 von Rangoo

Hi!

Ich wollte dir auch nichts unterstellen. Bin kein Pascal-Kenner, deshalb wundert es mich, dass der Code so funktioniert, wenn du statt einer Funktion an der markierten Stelle eine Prozedur aufrufst.
Ich hätte erwartet, dass du den Code in
kompExist := kompExist(komp, KompPointer^.next);

abändern musst, damit es läuft.

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: