我试图以更复杂的方式使用reduce函数,然后通常用于它。我甚至不确定这是否可行,但这是我正在尝试做的事情:
给出一个列表(1 2 3)和……
拟议的操作确实可以实现为 reduce (亦称 foldr ):
reduce
foldr
(+ 1 (* 9 (+ 2 (* 9 (+ 3 (* 9 13)))))) => 9739 (reduce (lambda (e acc) (+ e (* 9 acc))) 13 '(1 2 3)) => 9739
关于常数, 13 在最里面的表达式中只使用一次,因此它非常适合用作初始值。 9 用于乘以累计值。当递归开始展开时,输入列表从右到左使用,此时我们将当前元素添加到累积结果。
13
9