Probeklausur, 2.Teil
2002-01-26 21:00
Zaphod
Da wir am Montag ja die Probeklausur in der Großübung besprechen wollten habe ich die mal gemacht. Und als ich mir anschließend die Lösung ansah (der Link dazu war irgendwo in einem Topic zum ersten Teil), fiel mir auf, dass dort noch eine weitere Funktion definiert war, welche gar nicht gefordert war. Okay, das ist auch richtig, und macht die Arbeit wahrscheinlich auch leichter, aber wenn man die weglässt, und außerdem die Funktionen m und c in der letzten Aufgabe nicht global haben will (wozu sollte man auch?), dann sieht die Lösung so aus:
Die letzte Zeile ist schließlich das, was das letrec und damit auch die gesamte Funktion zurückgibt.
(define (anpassungsgerade liste)
(letrec
((n (length liste))
(m (/ (- (* n (x*y-Summe liste))
(* (xsumme liste)(apply + (yliste liste))))
(- (* n (x**2-Summe liste))
(* (xsumme liste) (xsumme liste)))))
(c (/ (- (apply + (yliste liste)) (* m (xsumme liste)))
n)))
(lambda (x) (+ (* m x) c))))
Kommentar dazu: Mit letrec definiere ich lokale Variablen, welche bis zur Schlussklammer vom letrec gültig sind (SKOPUS). Überhaupt verwende ich letrec und nicht let, da ich z.B. n und m für die Definition von c bereits benötige. Daher ist die Reihenfolge entscheident.Die letzte Zeile ist schließlich das, was das letrec und damit auch die gesamte Funktion zurückgibt.