Python 递归算法,显示是否可以从整数列表中选择两个整数,使其差值等于给定值

Python 递归算法,显示是否可以从整数列表中选择两个整数,使其差值等于给定值,python,algorithm,recursion,Python,Algorithm,Recursion,完整问题:设计一个递归算法,该算法将显示是否可以从整数列表中选择两个整数,以便两个整数的差值等于给定值。提示:您可能希望调用另一个算法(即函数),该算法接受执行递归的更多参数。Submit python函数是_diff_two(value,diff),它将列表和所需的差作为非负整数,并返回true或false。您可以使用的唯一功能是:打印、str、int、float、bool、len、list、range、abs、round、pow。我们不会因为str()的使用而扣减,但您实际上并不需要它。不要

完整问题:设计一个递归算法,该算法将显示是否可以从整数列表中选择两个整数,以便两个整数的差值等于给定值。提示:您可能希望调用另一个算法(即函数),该算法接受执行递归的更多参数。Submit python函数是_diff_two(value,diff),它将列表和所需的差作为非负整数,并返回true或false。您可以使用的唯一功能是:打印、str、int、float、bool、len、list、range、abs、round、pow。我们不会因为str()的使用而扣减,但您实际上并不需要它。不要导入库

允许的关键字:if、elif、else、and、or、not、return、def、assert、

不允许的关键字:for、while、in、import

请注意,您可能不使用切片(标记中的冒号)

我在实现这个算法时遇到困难;我不确定基本情况是什么,如何使用helper方法,或者如何在不使用循环或python列表切片的情况下解决问题。我目前拥有的是一个名为check_diff()的助手方法,它将列表作为参数,递归地遍历列表并将原始列表中的值之间可能存在的所有差异添加到新列表中。然后,我将调用is_diff_two()方法中的方法,在一行中检查diff参数是否在列表中-如果是,它将返回true,如果不是,则返回false。到目前为止,这就是我的helper方法,但我无法弄清楚如何正确地递归列表并获得所有可能的差异

def check_diff(values):
    diff_list = []
    if len(values) == 1:
        return diff_list
    else:
        diff_list.append(values[0] - check_diff(values[1]))
        return values[0] - check_diff(values[1])

您可以创建一个函数,该函数可选地获取给定列表的两个索引,并使用递增的第二个索引进行递归调用,直到超出范围,此时使用递增的第一个索引进行递归调用,直到超出范围,如果两个索引中没有发现与目标值不同的两个值,则在该点返回
False
,如果发现任何此类值,则返回
True

def is_diff_two(values, diff, a=0, b=1):
    if a == len(values):
        return False
    if b == len(values):
        return is_diff_two(values, diff, a + 1, a + 2)
    return abs(values[a] - values[b]) == diff or is_diff_two(values, diff, a, b + 1)
因此,
是两个不同的([2,4,8],3)
返回
False
, 这
是两个不同的([2,4,8],4)
返回
True