Torkelndes Rentier?

1 Antwort

Ich vermute, der Fehler liegt in dieser Zeile:

return waysHome(length, x + 1, y) + waysHome(length, x + 1, y + 1) + waysHome(length, x + 1, y - 1);

Genauer gesagt ist der erste Funktionsaufruf zu viel. Er schwankt ja immer nach rechts oder links; aber der Fall, nicht zu schwanken, sondern nur vorwärts zu gehen, kommt nicht vor. Ohne diesen Term terminiert es bei mir jedenfalls.

Woher ich das weiß:Studium / Ausbildung – B.Sc., M.A., M.Sc. & Doktorand

PWolff  16.01.2023, 17:19

Terminieren müsste es auch mit diesem Fall - x erhöht sich ja in jedem Fall um 1.

1
petermaier11  16.01.2023, 17:34
@PWolff

Würde ich theoretisch auch sagen. Praktisch tut es das aber bei mir nicht, was ich mir nicht erklären kann.

0
PWolff  16.01.2023, 18:59
@petermaier11

Bei mir terminiert der Code des Fragestellers, braucht allerdings in der Größenordnung eine Minute.

(Falls es interessiert: er ruft die Funktion 2677380022-mal auf.)

0
PWolff  16.01.2023, 19:02
@PWolff

Wenn man hier nicht rekursiv vorgeht, sondern iterativ (Abwandlung des Pascalschen Dreiecks) kommt man mit 144 Additionen aus.

0
KevinSpiegel12 
Beitragsersteller
 16.01.2023, 19:02
@PWolff

Also sollte ich es lassen oder wie soll ich machen?

0
PWolff  16.01.2023, 22:08
@KevinSpiegel12

Nimm den Summanden

waysHome(length, x + 1, y)

raus. Dann funktioniert der Code.

1