Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

modul:m323:learningunits:lu01:loesungen:tracetable3 [2026/08/18 10:11] – Neue Loesung LU01.L12 - Trace Table Collatz adminmodul:m323:learningunits:lu01:loesungen:tracetable3 [2026/08/18 10:18] (aktuell) – Typografie korrigiert admin
Zeile 43: Zeile 43:
 ==== 1. Welche Spalten werden überflüssig? ==== ==== 1. Welche Spalten werden überflüssig? ====
  
-Die Spalten **„n (vorher)"** und **„n (nachher)"** fallen zusammen zu einer einzigen Spalte ''n''. Grund: In der rekursiven Fassung wird ''n'' nie überschrieben. Jeder Aufruf bekommt seinen eigenen ''n''-Wert und behält ihn bis zum Ende.+Die beiden Spalten //n (vorher)// und //n (nachher)// fallen zusammen zu einer einzigen Spalte ''n''. Grund: In der rekursiven Fassung wird ''n'' nie überschrieben. Jeder Aufruf bekommt seinen eigenen ''n''-Wert und behält ihn bis zum Ende.
  
 Ebenso verschwindet die Notwendigkeit, ''schritte'' als laufend veränderten Zähler mitzuführen – der Wert wird als Parameter weitergereicht. Ebenso verschwindet die Notwendigkeit, ''schritte'' als laufend veränderten Zähler mitzuführen – der Wert wird als Parameter weitergereicht.
  
-**Der Kern:** Veränderlicher Zustand zwingt dazu, in der Tabelle einen //Zeitverlauf// zu dokumentieren („welchen Wert hatte ''n'' wann?"). Bei Parameterübergabe genügt eine //Momentaufnahme// pro Aufruf. Genau das meint die funktionale Programmierung, wenn sie sagt, Unveränderlichkeit mache Code leichter nachvollziehbar.+**Der Kern:** Veränderlicher Zustand zwingt dazu, in der Tabelle einen //Zeitverlauf// zu dokumentieren: Welchen Wert hatte ''n'' wann? Bei Parameterübergabe genügt eine //Momentaufnahme// pro Aufruf. Genau das meint die funktionale Programmierung, wenn sie sagt, Unveränderlichkeit mache Code leichter nachvollziehbar.
  
 ==== 2. Warum die zweite Variante leichter nachzuvollziehen ist ==== ==== 2. Warum die zweite Variante leichter nachzuvollziehen ist ====
Zeile 57: Zeile 57:
 ==== 3. Was passiert bei collatz(0)? ==== ==== 3. Was passiert bei collatz(0)? ====
  
-''!= 1'' ist wahr, also läuft die Schleife. ''% 2 == 0'' ist wahr, also wird ''n = 0 // 2 = 0''. Der Wert ändert sich nie – die Schleifenbedingung wird nie falsch.+''!= 1'' ist wahr, also läuft die Schleife. ''% 2 == 0'' ist wahr, also wird ''n = 0 // 2 = 0''. Der Wert ändert sich nie – die Schleifenbedingung wird nie falsch.
  
 ^ Fassung ^ Verhalten ^ ^ Fassung ^ Verhalten ^
Zeile 80: Zeile 80:
 Der Grund für die vielen Schritte: Ungerade Zahlen werden auf ''3n + 1'' vergrössert – die Folge steigt zunächst auf 52 an, bevor sie fällt. Bei 7 folgen mehrere ungerade Zahlen kurz hintereinander (7, 11, 17, 13, 5), sodass die Folge immer wieder nach oben springt. Der Grund für die vielen Schritte: Ungerade Zahlen werden auf ''3n + 1'' vergrössert – die Folge steigt zunächst auf 52 an, bevor sie fällt. Bei 7 folgen mehrere ungerade Zahlen kurz hintereinander (7, 11, 17, 13, 5), sodass die Folge immer wieder nach oben springt.
  
-Die Anzahl Schritte lässt sich der Startzahl nicht ansehen – ''6'' braucht 8 Schritte, ''7'' deren 16, ''8'' nur 3. Genau das macht die Collatz-Folge zu einem guten Beispiel dafür, warum man Algorithmen ausführen oder tracen muss, statt sie zu erraten.+Die Anzahl Schritte lässt sich der Startzahl nicht ansehen''6'' braucht 8 Schritte, ''7'' deren 16, ''8'' nur 3. Genau das macht die Collatz-Folge zu einem guten Beispiel dafür, warum man Algorithmen ausführen oder tracen muss, statt sie zu erraten.
  
 ---- ----
 [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi [[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi
  
  • modul/m323/learningunits/lu01/loesungen/tracetable3.1787040703.txt.gz
  • Zuletzt geändert: 2026/08/18 10:11
  • von admin