我正在嘗試在Common Lisp中編寫一個函數,將一個基數爲10的數字轉換爲以列表形式遞歸表示的基數8數字。將十進制數轉換爲八進制Lisp
這是我到目前爲止有:當我輸入數字< 8> -8,但遞歸的情況下,給了我很多的麻煩
(defun base8(n)
(cond
((zerop (truncate n 8)) (cons n nil))
((t) (cons (mod n 8) (base8 (truncate n 8))))))
此功能工作正常。當我嘗試8作爲參數(應返回(1 0)
)時,出現錯誤Undefined operator T in form (T)
。
在此先感謝。
謝謝!我的意思是't'是真值。這解決了它,所以它可以像我期望的那樣工作。現在我想擁有我正在返回的反向列表。有可能只在一個函數中做到這一點,或者我必須有一個幫助函數? – user2177693
沒關係,我計算出來: (defun定義base8(N) (COND ((zerop(截去ñ8))(利弊Ñ無)) (噸(追加(base8(截斷ñ8))(利弊(mod n 8))nil))))) – user2177693