这应该是一个函数的定义,如果输入的值是偶数自然数,则返回t,如果输入的值是奇数自然数,则返回nil:
(defun evec (n)
(if (zp n)
(if (zerop n)
t
nil)
(evec (- n 2))))
当我输入一个偶数时,它会正确返回t并且它应该为其他任何东西返回nil但它没有!其实我猜它不会停止,我不明白为什么。当我输入像 -1 这样显然不是偶数自然数的数字时,我希望这段代码首先通过“if”,因为 (zp -1) 等于t,并且由于 -1 不等于 0,因此 (zerop - 1) 应该是nil,这意味着输出应该是nil并且程序应该终止。
事实上,我知道如何以实际工作的方式更好地实现这个功能,我只需要知道为什么这段代码不起作用,以便更好地理解这种语言,因为我刚刚开始学习 ACL2!...
谢谢您的考虑。