如何使用 Python 中的递归检查数组中的所有元素是否相等?

How to check if all elements in an array are equal using recursion in Python?

我正在练习递归,但不确定我的代码为什么会失败。

def isEqual(arr, n):
    if(n==1):
        return arr[n]
    return arr[n-1]==isEqual(arr, n-1)

逻辑很笼统。我假设我有一个方法可以检查我的数组中直到长度 n-1 的所有元素是否相等,isEqual(arr, n-1)。接下来,我使用 arr[n-1]==isEqual(arr, n-1).

检查第 n 个元素是否等于前面的元素

但是,代码对于基本测试用例失败,例如 -

arr = [5,5,5,5,5,5]
isEqual(arr, len(arr))

有人能指出我哪里出错了吗?

您混淆了返回值 v.s 相等性检查。纠正的方法有很多种,这里举个例子

def isEqual(arr, n):
    if(n<=0):
        return True
    return arr[n-1]==arr[n] and isEqual(arr,n-1)
arr = [5,5,5,5,5,5]
print(isEqual(arr, len(arr)-1))
brr = [1,2,3,4,5]
print(isEqual(brr, len(brr)-1))
crr=[False]*5
print(isEqual(crr, len(crr)-1))