Lisp中的平方和

时间:2010-04-21 05:48:18

标签: lisp

我需要编写函数sum-squares的非递归版本,并使用基于参数列表长度的do-loop。

1 个答案:

答案 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))