scheme - 如何修改我的代码以仅添加偶数?
问题描述
我应该编写一个程序来接受用户输入并仅找到偶数的总和。我已经编写了代码,以便它找到所有输入的总和,但我不确定如何修改它以仅将偶数输入相加。
(define even
(lambda()
(accumulator 0 0 (read))))
(define accumulator
(lambda(sum n next)
(if (not (number? next))
(compute-sum sum n)
(accumulator (+ n sum) (+ 1 n)(read)))))
(define compute-sum
(lambda(sum n)
(if (> n 0)(+ sum n)
"no number")))
(even)
如果输入是1 2 3 4 5 end,输出应该是6
解决方案
(define even
(lambda()
(accumulator 0 0 (read))))
(define accumulator
(lambda(sum n next)
(if (not (number? next))
(compute-sum sum n)
; Problem 1: (accumulator (+ n sum) (+ 1 n)(read)))))
(if (even? next)
(accumulator (+ next sum) (+ 1 n) (read))
(accumulator sum (+ 1 n) (read))))))
(define compute-sum
(lambda(sum n)
; Problem 2: (if (> n 0)(+ sum n)
(if (> n 0) sum
"no number")))
(even)
问题1:递归调用应该添加next
到sum
基于它是否是偶数。
问题 2:最终结果不应该添加n
到 中sum
,它应该只返回总和。
推荐阅读
- qr-code - 为什么 zbar 和 zxing 无法解码这个条形码?
- routes - Symfony 5 - 路由 - 错误分配的可选参数
- flutter - 填充前的未来返回列表
- google-apps-script - 保存在 Google Drive 中的 HTML 文件将被解析为电子表格
- jquery - 如何在每个选择框上获取 data-id 属性
- javascript - 在 Glidejs 中轮播设置为自动播放时的触发功能
- ntp - 修复没有闰秒的旧 ntp 服务器
- javascript - 使用javascript获取属性值
- swift - 如何仅在长按手势 SwiftUI 时打开菜单
- javascript - 使用基于不同地图的值的键创建地图?