;gnu clisp 2.49
(defun hanoi(n from_tower to_tower aux_tower)
(hanoi (- n 1) from_tower aux_tower to_tower)
(hanoi (- n 1) aux_tower to_tower from_tower)
)
(print "n=3")
(hanoi 3 1 3 2)
我试图用5个磁盘制作一个河内塔,并使用在线LISP编译器对其进行编译,这给了我...
错误,警告:-Lisp堆栈溢出。重置
我以为这只是一个简单的代码,但是我找不到哪个部分溢出。
答案 0 :(得分:2)
您的函数中没有终止条件。
尝试手动执行:
(hanoi 3 'a 'b 'c)
(hanoi 2 'a 'b 'c)
(hanoi 1 'a 'c 'b)
(hanoi 0 'a 'b 'c)
(hanoi -1 'a 'c 'b)
(hanoi -2 'a 'b 'c)
(hanoi -3 'a 'c 'b)
等等,依此类推,直到可怜的Lisp解释器堆栈溢出为止。