Guest User

Untitled

a guest
Jun 21st, 2018
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. ;funktion1: N -> N
  2. ;Die Funktion erwartet einen Wert als Eingabe und gibt auch
  3. ;genau diesen zurück wenn der Wert kleiner 3 ist.
  4. ;Ansonsten berechnet die Funktion das Ergebnis durch 3-maliges
  5. ;rekursives Einsetzen des Eingabewertes in die Funktion selbst.
  6. ;Der Eingabewert wird dabei einmal um Eins, einmal um Zwei und
  7. ;einmal um Drei reduziert. Falls etwas negatives eingegeben wurde
  8. ;gibt die Funktion "ausserhalb des Wertebereichs" zurück.
  9. (define (funktion1 n)
  10. (cond
  11. ;Falls n kleiner 3 aber positiv ist wird n zurückgegeben
  12. ((AND (< n 3) (>= n 0)) n)
  13. ;Falls n größer oder gleich 3 ist wird gerechnet
  14. ((>= n 3) (+ (funktion1 (- n 1))
  15. (* 2 (funktion1 (- n 2)))
  16. (* 3 (funktion1 (- n 3)))))
  17. ;Für alle anderen Fälle wird eine Fehlermeldung ausgegegeben
  18. (else '(ausserhalb des Wertebereichs)) ))
  19.  
  20. ;funktion2: N -> N
  21. ;Die Funktion rechnet das selbe wie funktion1, allerdings
  22. ;auf iterative Art und Weise
  23. (define (funktion2 n) (iterativef n 3 0 1 2))
  24.  
  25. ;iterativef ist die Hilfsfunktion zur funktion2, die die eigentliche
  26. ;Berechnung durchführt. Es werden folgende Parameter erwartet:
  27. ;n := Die Zahl mit der ursprünglich gerechnet werden sollte
  28. ;m := Eine Zählervariable die nach jedem Schritt hochgezählt wird
  29. ;a := Das Ergebnis der Funktion für n-3
  30. ;b := Das Ergebnis der Funktion für n-2
  31. ;c := Das Ergebnis der Funktion für n-1
  32. (define (iterativef n m a b c)
  33. (cond
  34. ;Falls n kleiner 3 aber positiv ist wird n zurückgegeben
  35. ((AND (< n 3) (>= n 0)) n)
  36. ;Falls n negativ ist wird eine Fehlermeldung ausgegeben
  37. ((< n 0) '(ausserhalb des Wertebereichs))
  38. ;Falls noch nicht genügend iterative Schritte gemacht wurden
  39. ;wird die Funktion erneut aufgerufen. Der Wert für n wird
  40. ;dabei nicht verändert. m erhöht sich um 1, a bekommt den
  41. ;Wert von b, c den Wert von b und c das Ergebnis der Rechnung
  42. ;(+ (* a 3) (* b 2) c) zugeordnet
  43. ((<= m n) (iterativef n (+ m 1) b c (+ (* a 3) (* b 2) c)))
  44. ;Falls man nun beim gewünschten n angekommen ist wird das
  45. ;Ergebnis aus c ausgegeben
  46. (else c) ))
Add Comment
Please, Sign In to add comment