对偶数求和的 Scheme 函数
Scheme Function to sum even numbers
我需要在方案中创建一个递归函数来求和偶数的前 n 个数字。
(define (even-sum n)
(cond ((= n 0) 0)
((= (modulo n 2) 0) (+ n (even-sum (- n 2))))))
这是我目前所拥有的,但它只运行了 n 次,而不是对前 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
,您可以使用一个简单的公式获得相同的结果。无需迭代!
(define (even-sum n)
(let ((m (if (even? n) n (- n 1))))
(* (+ m 2) (/ m 4))))
无论哪种方式,它都按预期工作:
(even-sum 1001)
=> 250500
我需要在方案中创建一个递归函数来求和偶数的前 n 个数字。
(define (even-sum n)
(cond ((= n 0) 0)
((= (modulo n 2) 0) (+ n (even-sum (- n 2))))))
这是我目前所拥有的,但它只运行了 n 次,而不是对前 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
,您可以使用一个简单的公式获得相同的结果。无需迭代!
(define (even-sum n)
(let ((m (if (even? n) n (- n 1))))
(* (+ m 2) (/ m 4))))
无论哪种方式,它都按预期工作:
(even-sum 1001)
=> 250500