首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >球拍复合reduce函数

球拍复合reduce函数
EN

Stack Overflow用户
提问于 2019-03-10 17:28:20
回答 1查看 175关注 0票数 2

我正在尝试以一种比它通常的用途更复杂的方式使用reduce函数。我甚至不确定这是否可能,但这是我想要做的:

给定一个列表(1 2 3)和两个常量,让它们分别为913,我尝试使用reduce来结束:

(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))

我尝试了一种方法,将13添加到then列表的后面,因此我让(1 2 3 13)尝试使用Lambda和reduce进行一些映射,但我无法获得正确的答案。

我会发布我已经尝试过的代码,但我的互联网断了,我正在手机上输入这段代码,所以很抱歉我无法显示我想要做的事情,但目标是上面使用reduce的表达式的形式

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-10 18:41:19

所提出的操作实际上可以实现为reduce (也称为foldr):

代码语言:javascript
复制
(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13))))))
=> 9739

(reduce (lambda (e acc) (+ e (* 9 acc)))
        13
        '(1 2 3))
=> 9739

关于常量,13在最里面的表达式中只使用了一次,所以它非常适合用作初始值。9用于将累加值相乘。当递归开始展开时,输入列表从右到左使用,此时我们将当前元素添加到累积结果中。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55086264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档