我正在尝试在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
答案 0 :(得分:0)
您以递归方式递增l
或递减r
,但由于您首先if
没有else
,因此它会在某个时刻返回None
。
您的代码等同于
def peak(L,l,r,n):
if l<r:
... #recursion
else:
return None