In Konkrete Abstraktionen gibt es dieses Beispiel für Rekursion:Scheme/einfache Rekursion Fragen
(define subtract-the-first (lambda (n)
(if (= n 0) 0
(- (subtract-the-first (- n 1)) n))))
Das verstehe ich. Wenn z. B. n = 3 ist, ergibt diese Funktion: (- (+ (+ (+ 1) 2) 3))
-> -6
In einem der folgenden Beispiele soll jedoch erklärt werden, warum die Reihenfolge der Operationen nicht geändert werden kann. Zum Beispiel, lassen Sie uns dies betrachten:
(define subtract-the-first2 (lambda (n)
(if (= n 0) 0
(- n (subtract-the-first2 (- n 1))))))
Wenn ich (subtrahieren-the-first2 4) nennen, ist das Ergebnis 2. Allerdings verstehe ich nicht ganz die Auswertung. Offensichtlich mache ich hier einen Fehler, denn siehe hierzu: (- 4 (+ 3 (+ 2 (+ 1))))
, was (- 4 6)
entspricht und somit zu -2 auswertet.
schätze ich irgendwelche Hinweise, wie ich für eine halbe Stunde Kopf gegen die Wand oder so schon ...
Danke hämmern mir habe!
Vielen Dank! Ich habe falsche Annahmen über die Bewertung gemacht, aber jetzt ist alles klar. – talkinghead