2016-05-22 8 views
-1

Ich versuche, die Ergebnisse zu erhalten, wie in der Frage auf dem Foto angebracht gezeigt enter image description herewerden nicht verringern Sie den Wert gegeben

wie immer die Ergebnisse, die ich bekommen habe sind das genaue Gegenteil von dem, was ich will

enter image description here

mir bitte helfen, das Problem zu identifizieren

ist die Korrektur nach @ Scotts Antwort

(defun decrementing (num) 
     (if(= 1 num) 
       (princ "the number has reach 1. goodbye.") 
      (if (= (- num 1) 10) 
      (format t "~&") 
      (format t "the next number is ~d. ~&" (- num 1) 
      ))) (decrementing (- num 1))) 
bekam

ich die Lösung, aber die Schleife endet nie

+0

Warum sollte '(= (- num 1) 10)' jemals wahr sein? –

+1

Gibt es Gründe dafür, dass Sie Text als Bild einfügen? –

+0

@ScottHunter hmmm gute Frage –

Antwort

1

Sie den rekursiven Teil Ihrer Funktion innerhalb den Anruf zu format, gelegt, so dass es die Rekursion beendet hat, bis nach eigentlich nicht drucken (weil alle Argumente zu format ausgewertet werden müssen, bevor format selbst drucken kann).

+0

Meinst du so? 'Code' (defun Dekrementieren (num) (if (num = 1) (princ "die Nummer 1. Auf Wiedersehen hat erreichen.") (if (= (- num 1) 10) (Format t "~ &") (Vermindern (- num 1) (Format t "die nächste Nummer ist ~ d ~ &." (- num 1) ))))) 'Code' es jetzt nur druckt die 9. Zeile –

+0

Ich der Fall, ich bekomme nur die 9. Zeile, nichts anderes wird gedruckt –

0
(defun decrementing (num) 
     (if(= 1 num) 
       (princ "the number has reach 1. goodbye.") 
      (if (= (- num 1) 0) 
      (format t "~&") 
      (format t "the next number is ~d. ~&" (- num 1) 
      ))) (if (> num 1)(decrementing (- num 1)))) 

ich es geschafft haben, das Problem zu lösen, danke sooo viel für die Hilfe

Verwandte Themen