给定两个数字列表(长度相同),返回相应数字对之间的最大差异(不创建另一个列表)。例如......
Given [ 2 6 3 ] and [ 4 6 2 ],
their differences are [ (2-4) (6-6) (3-2) ], or [ 2 0 1 ],
so the largest difference is 2.
请注意,差异始终为正(绝对值)。
答案 0 :(得分:2)
我只在OP提供代码时提供代码,所以这里是刚才描述的解决方案。快乐的编码!
您可以使用fold-left
并提供一个过程,该过程采用最大累加器和正在处理的两个元素之间的差异的绝对值。
fold-left
是R6RS name,位于库(rnrs lists (6))
中。对于兼容的方法,您需要使用SRFI-1 List Library。这里称为fold
,累加器是最后一个参数而不是第一个参数。
许多R5RS Scheme实现和从Scheme语言(如Racket)派生的语言都有一个由名称foldl
实现的左侧折叠。您需要检查它的文档以获取参数顺序,因为它们会有所不同。它不是标准的一部分,因此在实现之间不可移植。我劝你要么使用R6RS,要么使用SRFI-1。