(defun fact (n)
(do
((i 1 (+ 1 i))
(prod 1 (* i prod)))
((equal i n) prod)))
我已完成上述代码,当我尝试fact(4)
时,它会给我ans is 6
。我不确定出了什么问题。谁能帮我?
答案 0 :(得分:3)
更改为
(defun fact (n)
(do
((i 1 (+ 1 i))
(prod 1 (* i prod)))
((equal i (+ n 1)) prod)))
基本上,你做的迭代次数少于必要。
答案 1 :(得分:3)
Mihai已经给出了答案。
我会把它写成:
(defun fact (n)
(do ((i 1 (+ 1 i))
(prod 1 (* i prod)))
((> i n) prod)))
Common Lisp具有适用于数字的所有常用算术谓词:=
,<
,>
,...