lisp-Programm zur Berechnung der Summe von n zahlen

(defun sum-n-numbers(n)(if(=n 1)
1
(+N(sum-n-numbers(-n 1))))) 

Edit 2:(defun sum-n-numbers(n)
(if(=n 1)
1
(+N(sum-n-numbers(-n 1))
)
)
)

Der obige code wird ausgeführt, aber wenn ich den Typ ((SUMME-N-ZAHLEN 1 3 2) für die Ausgabe,funktioniert es nicht und ich bekomme Fehler.

Ich weiß, dieser einfache code kann auch ausgeführt werden, indem die inbuild lisp-Funktion (+ 1 3 2), die automatisch berechnet die Summe der zahlen,aber ich habe eine Klausur Frage, wo es um die Frage, zur Berechnung der Summe von n zahlen mithilfe der defun-Funktion.

Edit 1: Dies ist die Fehlermeldung, die ich erhalte:

Error: Call ((LAMBDA (#:N) (DECLARE (SPECIAL:SOURCE #) (LAMBDA-NAME SUM-N-NUMBERS))                  (BLOCK #:SUM-N-NUMBERS (IF # 1 #))) 1 3 2) has the wrong number of arguments.
1 (abort) Return to level 1.
2 Return to debug level 1.
3 Return to level 0.
4 Return to top loop level 0.
  • Welche Fehler machen Sie?
  • Vielen Dank für Ihre Antwort,dies ist der Fehler, dass ich immer: ` Error: Call ((LAMBDA (#:N) (DECLARE (SPECIAL:SOURCE #) (LAMBDA-NAME SUMME-N-ZAHLEN)) (BLOCK #:SUM-N-NUMMERN (WENN # 1 #))) 1 3 2) hat die falsche Anzahl von Argumenten. 1 (Abbruch) Zurück in Ebene 1. 2 Zurück zu debug-level 1. 3 Zurück zu Ebene 0. 4 gehen Sie Zurück zu top loop level 0.`
  • Ich bearbeitet meine Frage, so dass es leicht zu Lesen ist der Fehler.
  • jetzt würden Sie zu formatieren müssen Sie die Lisp-Funktion in einem richtigen Weg...
  • (1) verstehen, dass die Zeichen, die Sie denken, die als operations-oder Satzzeichen in anderen Sprachen können bis gültig Symbolen in Lisp (2) separate Symbole mit Leerzeichen und (3) missbrauchen Sie nicht die Tatsache, dass Ihre Lisp-reader angezeigt wird, um zu konvertieren alpha Zeichen in Großbuchstaben durch die Verwendung konsistente Fall (4), etwas zu Lesen und Experimentieren - dies ist Eure Prüfung!
InformationsquelleAutor sumedha | 2013-03-06
Schreibe einen Kommentar