math - 对偶数求和的方案函数
问题描述
我需要在方案中创建一个递归函数来总结前 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
推荐阅读
- docker - docker内的prometheus没有刮取node_exporter
- c++ - 如何执行特定的双“for”循环来进行计算
- bash - curl 调用有效,但仍返回“无法解析主机:POST”
- jquery - 从日期时间 json 对象自动截断时间部分
- sql - 在/不在日期
- elasticsearch - 使用模糊性和 shingle 分析器使用 matchQuery 进行 Elasticsearch 搜索
- reactjs - Next.js 带有子域的域路由
- reactjs - React 从一个组件向另一个组件发送数据
- python - 通过 Gmsh3D 在 fipy 中加载 (.msh) 文件时出现问题
- outlook - OpenPop 消息。保存