我是品牌嶄新的計劃。除了幻燈片在課堂上向我解釋的那樣,今晚是我第一次玩這個遊戲。我必須編寫一個方案程序,它接受用戶輸入操作員,然後對其後的數字執行該操作。 (換句話說,實現我自己的內置'+','*'等操作符的方案版本)。問題是我必須使用遞歸。試圖繞着這個方案的語法來操縱我,讓我很難確定從哪裏開始。因此,我決定從一些代碼開始,這些代碼至少遞歸地總結用戶輸入的值(不用擔心識別用戶輸入運算符和括號)。我只是簡單地無法弄清楚如何使它工作。這裏就是我想:我想遞歸求和用戶輸入的整數
(define run (lambda (x)
(cond
((eqv? x "a") (display x))
(else (+ x (run(read))))
)))
(run (read))
條件檢查,如果x等於「A」的用意是讓我打破了遞歸現在的方式。在最後的版本中,輸入將在一組括號之間,但是當我來到它時,我認爲我會穿過那座橋。無論如何,代碼只是繼續接受輸入,並永不停止。所以,顯示x的條件永遠不會被調用,我猜。我知道我可能做錯了一切,我會非常欣賞一些指針。
編輯:好的,我至少開始意識到某些東西沒有道理。比如我的顯示x實際上不會給出總和,因爲我不以任何方式將總和存儲在x中。但是,我仍然不明白爲什麼當我輸入字母a時代碼至少沒有停止。
編輯2:我已經得到它的工作,但只有當條件等於1.我怎樣才能得到它來識別輸入的字符或更好,但右括號讓它結束遞歸只是喜歡它與1? :
(define run (lambda (x)
(cond
((eq? x 1) 0)
(else (+ x (run(read))))
)))
(run (read))