【发布时间】:2013-03-04 01:44:27
【问题描述】:
我要编写一个 lisp 程序来生成十六进制数的实际值。我已经编写了一个函数,但似乎遇到了 stackoverflow (deep) 错误。我想知道是否有人可以指出我的错误或指导我正确的方向。
如果没有针对此问题发布代码,我将不胜感激,因为这是家庭作业的一部分。因此,我只想要一个可能出错的解释或方向。
我觉得我的问题是我的递归没有终止,但我不知道如何解决它。
这是我的代码:
(defun calc (hex)
(if hex
(if (> (length hex) 1)
( + (first (reverse hex)) (* 16 (calc (reverse hex)))) hex)))
提前致谢。
【问题讨论】:
-
澄清一下,输入的类型是什么?它是数字还是字符串或其他东西?我假设输出应该是相同的数字,但以 10 为底正确吗?
-
数字是 '(7 d d) 类型的列表,是十六进制数字的分解列表
-
输出应该是一个以 10 为基数的数字。