在软件设计时,我们需要一个通用的模板来使设计简单化,下面就介绍一个Lisp中累加和的模板。
(define (sum term next a b)
(if (> a b)
0
(+ (term a) (sum term
next
(next a)
b)
)))
下面有几个实例。求普通整数的累加和
(define (sum-int a b)
(define (term x) x)
(define (next x) (+ x 1))
(sum term
next
a
b)
)
求整数平方的累加和
(define (sum-sq a b)
(sum (lambda(x) (* x x))
(lambda(x) (+ x 1))
a
b))