我需要在scheme中创建一个递归函数来总结前n个偶数。
(定义(偶数和n) (cond((= n 0)0) ((=(modulo n 2)0)(+ n(偶数和( - n 2)))))))这个 …
你什么时候忘了处理这个案子 n 很奇怪:
n
(define (even-sum n) (cond ((<= n 0) 0) ((= (modulo n 2) 0) (+ n (even-sum (- n 2)))) (else (even-sum (- n 1)))))
顺便说一句:你可以用一个简单的公式来实现相同的结果,假设这样 n >= 0 。没有必要迭代!
n >= 0
(define (even-sum n) (let ((m (if (even? n) n (- n 1)))) (* (+ m 2) (/ m 4))))
无论哪种方式,它都按预期工作:
(even-sum 1001) => 250500