Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#24

Re: Problem der Erbteilung ?

  Alt 21. Nov 2006, 15:40
Zitat von Cöster:
Wenn eine Lösung gefunden wurde, wird die For-Schleife von j nicht abgebrochen. Selbst, wenn man nach 'ShowSelection' (Z. 72) Break oder Exit aufrufen würde, würde aber nur die aktuelle Inkarnation abgebrochen. In den unteren Inkarnationen wird die Schleife auf jeden Fall zuende (bis j = Length(Feld)) durchlaufen.

Wie ließe sich das denn lösen?
Ist die Signatur nicht vorgegeben, sondern entwickelt man eine Lösung für ein Problem (und macht das rekursiv), so wird man hier wahrscheinlich mind. zwei Dinge anders machen. Das eine ist, man arbeitet mit einem Akkumulator. Das ist eine Art zusätzlicher Parameter, in der die Lösung mitgeschleppt wird. Da diese sich über die Rekursion aufbaut, gibt es einen Aufruf an dem die Lösung feststeht. Hier braucht man dann (mit Akkumulator) nicht zurückspringen. Das kann ordentlich Ressourcen schonen.
Der andere Punkt ist, bei so einem Problem kann man z.B. einer Funktion einen Rückgabewert geben, der anzeigt ob die Lösung gefunden wurde (auch ein globales Flag wäre denkbar), dann sollte man prüfen ob das Ergebnis eines Aufrufs gültig war und ggf. die weitere Ausführung des Aufrufs abbrechen.

Noch wahrscheinlicher würde man aber aus dem Grund die Rekursion gerade vermeiden und sich für eine Iteration entscheiden

Gruß Der Unwissende
  Mit Zitat antworten Zitat