【发布时间】:2021-06-11 16:54:58
【问题描述】:
我这里有一个代码,它试图获取低于给定数字的所有素数的总和。当我运行它时,我不断收到堆栈溢出错误,仅此而已,而且我似乎找不到哪里出错了。
(format t "Enter your number ~%")
;global variables
(defvar *number* (read))
(defvar *conditional-check* nil)
(defvar *prime* nil)
;sum-of-primes function
(defun sum-of-primes (x)
(defvar sum 0)
(primeCheck x 2)
(if (equal *prime* 'yes)
(progn
(setf sum (+ sum x))
(setf z (- x 1))
(conditional z)
(if (equal *conditional-check* 'yes) (sum-of-primes z) ()))
(and (setf z (- x 1)) (sum-of-primes z)))
)
;conitional function
(defun conditional (z)
(if (>= z 1) (setf *conditional-check* 'yes) (setf *conditional-check* 'no))
)
;prime number check
(defun primeCheck (*number* y)
(if (and (>= *number* y) (not (= (mod *number* y) 0)))
(progn
(setf z (+ y 1))
(primeCheck *number* z)
(setf *prime* 'yes))
(setf *prime* 'no))
)
;function call
(sum-of-primes *number*)
【问题讨论】:
标签: functional-programming lisp common-lisp clisp