我對LISP非常陌生,並且正在解決一些初學者問題。我試着定義一個ISPRIME函數,但它似乎沒有正常工作。這裏是我的代碼:定義ISPRIME函數的麻煩
(defun ISPRIME (n &optional (d (- n 1)))
(if (= d 0)
(return-from ISPRIME t))
(if (= (mod n d) 0)
(return-from ISPRIME nil))
(ISPRIME n (- d 1)))
但是一旦運行我的代碼使用值5爲例:
(ISPRIME 5)
Nil
5應該是一個素數。我懷疑一切都落入:(if(=(mod nd)0)語句中,當它不應該是.d應該繼續遞減,直到達到0並返回true,但它不。看到這裏我的邏輯錯誤是發生
任何及所有的幫助感激
'(mod 5 1)'。另外,你應該使用['COND'](http://www.lispworks.com/documentation/HyperSpec/Body/m_cond.htm)而不是'IF' +'RETURN-FROM's。 – jkiiski