给定两个数字列表(长度相同),返回对应的数字对之间的最大差异(而不创建另一个列表)。例如..。
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.
注意,差异总是正数(绝对值)。
发布于 2015-05-05 12:46:41
我只在OP提供代码时提供代码,所以下面是刚才描述的解决方案。编码愉快!
您可以使用fold-left
并提供一个过程,该过程取累加器的最大值和正在处理的两个元素之间差值的绝对值。
fold-left
是R6RS名称,驻留在库(rnrs lists (6))
中。对于兼容的方法,您需要使用SRFI-1列表库。这里称为fold
,累加器是最后一个参数,而不是第一个参数。
许多R5RS方案实现和语言都是从Scheme语言(如Racket)派生出来的,它们有一个由名称foldl
实现的左折叠。您需要检查它的文档,以获得参数顺序,因为它们是不同的。它不是标准的一部分,因此不能在实现之间进行移植。我建议您使用R6RS或SRFI-1。
https://stackoverflow.com/questions/30052370
复制相似问题