Ich bin neu in Scheme und auf die funktionale Programmierung im Allgemeinen.Schema mit Eingangsparameter in innere Funktion
Im Rahmen einer Übung, ich versuche, eine Funktion zu implementieren, dass das dauert eine Reihe n
und druckt Zeile für Zeile erster n
Fibonacci-Zahlen
Das Problem ist, dass, wenn das Programm den rekursiven Aufruf erreicht, es doesn‘ t erkennen n
und so bekomme ich einen Vertragsverletzungsfehler.
Von der Erforschung des Netzes glaube ich, ich muss let
Funktion in irgendeiner Weise verwenden, aber ich bin mir nicht sicher, wie.
Hier ist der Code:
(define fibo (lambda (n)
(if (= n 1)
1
(if (= n 2)
(begin
(display "1")
(newline)
1)
(begin
(display
(+ (fibo (- n 1)) (fibo (- n 2))))
)))))
Und die Fehler, die ich bekommen ist:
contract violation
expected: number?
given: #<void>
argument position: 1st
other arguments...:
Danke
Vielen Dank für Ihre ausführliche Antwort, aber ich darf nicht 'when' Aussage verwenden ... Gibt es eine andere Möglichkeit, es zu tun? – Noam
Ich habe die Antwort geändert. – Renzo