gpt4 book ai didi

lisp - 在 Lisp 中将十进制数转换为八进制数

转载 作者:太空宇宙 更新时间:2023-11-03 19:03:09 24 4
gpt4 key购买 nike

我正在尝试在 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)

提前致谢。

最佳答案

只是为了好玩,这里有一个没有递归的解决方案,使用内置功能:

(defun base8 (n)
(reverse (coerce (format nil "~8R" n) 'list)))

关于lisp - 在 Lisp 中将十进制数转换为八进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com