python中的峰值查找算法错误

时间:2018-06-11 08:05:08

标签: python algorithm recursion

我正在尝试在Python 2.7中实现峰值查找算法。该程序旨在找到峰值元素的索引。峰值元素被定义为一个不小于其直接邻居的元素(如果是第一个和最后一个元素,则只检查一个边)。我的代码总是打印“无”而不管输入如何。请查看代码:

def peak(L,l,r,n):
    if l<r:
        m = l + (r-l)//2
        if L[m] < L[m+1] and m < n:  # n is the length of the array L
            return peak(L,m+1,r,n)
        elif  m > 0 and L[m] < L[m-1]: # l and r are left and right bounds of
            return peak(L,l,m-1,n)     # the array
        else:
            return m

1 个答案:

答案 0 :(得分:0)

您以递归方式递增l或递减r,但由于您首先if没有else,因此它会在某个时刻返回None

您的代码等同于

def peak(L,l,r,n):
    if l<r:
        ... #recursion
    else:
        return None