我需要编写函数sum-squares的非递归版本,并使用基于参数列表长度的do-loop。
答案 0 :(得分:1)
以下是一般性的完成方式:
(defun sum-squares (list) (loop for x in list
for y = (* x x)
summing y into total
finally (return total)))
do循环解决方案更简单,但不是优雅的一半:
(defun sum-squares (list)
(let ((sum 0)) (do ((i 0 (1+ i)))
((>= i (length list)))
(setq sum (+ sum (* (nth i list) (nth i list)))))
sum))