저는 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)'. 또한,'IF' +'RETURN-FROM'보다는 ['COND'] (http://www.lispworks.com/documentation/HyperSpec/Body/m_cond.htm)를 사용해야합니다. – jkiiski