递归Python函数,用于检查两个给定列表是否相等

时间:2018-08-09 00:15:11

标签: python algorithm recursion

在Python中,我想编写一个将两个单独的整数列表作为参数的递归函数。如果列表完全相同,则该函数将返回True。如果列表不完全相同,则它们返回False。该函数不能使用任何内置库函数或“ ==”运算符来比较列表。我只能使用“ ==”比较单个整数。该函数也不能有循环。

说实话,我什至不知道从哪里开始或者如何从那里开始。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:-1)

自己动手刺一下并发表自己的尝试通常是最好的学习方法。话虽如此,这是我的算法:

def eq(a, b):
    if len(a) != len(b):
        return False
    elif not a and not b:
        return True

    return a[0] == b[0] and eq(a[1:], b[1:])

print(eq([1,2,3], [1,2,3]))
print(eq([1,2,3], [1,6,3]))
print(eq([1,2,3], [1,2,3,4]))

输出

True
False
False

说明

base cases开头:如果列表的长度不相同,我们可以得出结论说它们不相等,并返回false。否则,如果我们有两个空列表,我们称它们为相等。

让我们解决递归问题。将每个列表的第0个元素称为“当前元素”。如果当前元素不相等,则立即返回false。否则,将其从列表的前面切掉,然后用其余列表递归调用eq()