我要寫一個lisp程序來產生一個十六進制數的實際值。我寫了一個函數,但似乎得到一個stackoverflow(深)錯誤。我想知道是否有人能指出我的錯誤,或指引我朝着正確的方向前進。Lisp編程錯誤(堆棧溢出(深))
我將不勝感激,如果沒有代碼發佈的這個問題,因爲這是一個家庭作業的一部分。因此,我只想解釋或指示哪裏可能會出錯。
我覺得我的問題是,我的遞歸沒有終止,但我不知道如何解決它。
這裏是我的代碼:
(defun calc (hex)
(if hex
(if (> (length hex) 1)
(+ (first (reverse hex)) (* 16 (calc (reverse hex)))) hex)))
在此先感謝。
只是爲了澄清,輸入的類型是什麼?它是一個數字還是一個字符串或別的東西?並且我假設輸出應該是相同的數字,但是以10爲基數是正確的? – 2013-03-04 01:53:10
該數字是類型'(7 d d)類型的列表的一個十六進制數字分解列表 – anonuser0428 2013-03-04 03:51:38
而輸出應該是一個基數爲10的數字。 – anonuser0428 2013-03-04 04:00:38