在“减少”的Netlogo词典中,它们显示了一个带有“+”运算符的示例
reduce [?1 + ?2] [1 2 3 4]
它们相当于(((1 + 2)+ 3)+ 4)。
后来他们举了这个例子:
;; evaluate the polynomial, with given coefficients, at x
to-report evaluate-polynomial [coefficients x]
report reduce [(x * ?1) + ?2] coefficients
end
;; evaluate 3x^2 + 2x + 1 at x = 4
show evaluate-polynomial [3 2 1] 4
=> 57
该评估的等效扩展(使用括号)是什么?
答案 0 :(得分:2)
observer> show (4 * ((4 * 3) + 2)) + 1
observer: 57
理解它的关键是一步一步地去做。 reduce
首先获取列表的前两个元素并将其插入?1
和?2
,所以
(x * ?1) + ?2
变为
(x * 3) + 2
然后整个表达式变为?1
,列表的最后一个元素1
变为?2
。再次替换初始表达式中的?1
和?2
,我们得到:
(x * ((x * 3) + 2)) + 1
剩下的就是用x
替换4
:
(4 * ((4 * 3) + 2)) + 1