(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)))
((> i n) prod)))
Common Lisp には、数値に対して機能する通常の算術述語がすべてあります: =
, <
, >
, ...
への変更
(defun fact (n)
(do
((i 1 (+ 1 i))
(prod 1 (* i prod)))
((equal i (+ n 1)) prod)))
基本的に、必要以上に反復を 1 回実行していませんでした。