-1
我最近開始學習lisp,並完成了一些簡單的練習,可用於我,不幸的是我花了幾小時卡住&似乎我似乎沒有得到任何接近一個體面的解決方案。LISP編程 - 計算樹的節點的函數
我試圖產生一個函數,它採用表達式'樹'作爲它的參數,並返回與相關的計算值代替操作符的樹。
一個什麼樣的樹看起來是這樣的一個例子是:(* (+ 10 (* 4 9)) (- 6 10))
和函數應該返回:(-184 (46 10 (36 4 9)) (-4 6 10))
我已經試過各種但沒有任何工程,因爲它應該。我創造了一些可行但在編碼風格方面非常糟糕的東西,我真的迷失在這裏。
(defun evalTree (node &optional n)
(when node
(rplaca node (eval node))
(setq n (first (rest node)))
(rplaca n (eval n))
(setq n (first (rest (rest node))))
(rplaca n (eval n))
(setq n (first (rest (rest (first (rest node))))))
(rplaca n (eval n)))
(format t "node=~a n=~a~%" node n)
node)
我認爲我的解決方案應該使用apply函數或eval函數,但我只是不確定如何在樹上正確使用它們。
感謝您的解決方案,我不太清楚它的工作原理,但我會閱讀您使用的功能,希望我會從中學習。再次感謝。 – user1850231