Der Code zum Berechnen der Quersumme gestaltet sich dem Problem entsprechend ziemlich einfach:
(define (quersumme n) (let rekursionsfunc (function (r n) (if (= n 0) r (rekursionsfunc (+ (mod n 10) r) (/ n 10)) )) (rekursionsfunc 0 n) ) )
Zunächst wird lokal per let eine endrekursive Hilfsfunktion rekursionfunc erzeugt. Diese bekommt zwei Parameter r und n übergeben: r ist das bisherige Ergebnis, n ist die Zahl, von der die Quersumme noch gebildet werden muss.
Innerhalb der Funktion wird überprüft, ob die übergebene Zahl n 0 ist, falls ja, ist man fertig - das Ergebnis r wird zurückgegeben und über alle Ebenen der Rekursion "herausgereicht". Falls n größer 0 ist, wird die letzte Ziffer zum Zwischenergebnis addiert und die Funktion rekursionsfunc mit dem Zwischenergebnis und n, um eine Ziffer verkürzt, erneut aufgerufen.
*** tScheme, Version 2.7 *** To quit, type `(quit)` or Ctrl-D (Linux), Ctrl-C (Windows) -> (load "quersumme.s") function[quersumme] -> (quersumme 42) 6 ->
© 2006-2021 Solvium.de - Impressum