我正在尝试在 Common Lisp 中编写一个函数,以递归方式将基数为 10 的数字转换为基数为 8 的数字,以列表的形式表示。
这是我到目前为止所拥有的:
(defun base8(n)
(cond
((zerop (truncate n 8)) (cons n nil))
((t) (cons (mod n 8) (base8 (truncate n 8))))))
当我输入数字 < 8 和 > -8 时,此函数工作正常,但递归情况给我带来了很多麻烦。当我尝试 8 作为参数(应该返回(1 0)
)时,我得到一个错误Undefined operator T in form (T)
。
提前致谢。