我要写一个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