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