我正在尝试使用仅接受一个输入(数组)的函数在数组中找到一个固定点。问题是,我试图避免构建该函数可以调用的另一个函数。如果我能做到这一点,这种情况就迎刃而解了。这些数组将包含一个排序整数列表供我迭代。我试图通过使用二进制搜索来保持其运行时间较低。我已经尝试了 100 种不同的方法,但都没有什么效果。
def fixed_point(a):
if len(a) <= 2: # tried len(a) == 0 and len(a) == 1
return -1
mid = len(a)//2 # have used (len(a)-1)//2 as well
if mid == a[mid]:
return a[mid]
if mid > a[mid]:
return find_point(a[mid+1:])
else:
return find_point(a[:mid])
return -1
如果没有找到固定点,此函数将返回 -1。
该函数也通过了为此构建的 10000 次测试,但由于某种原因找不到“5”是数组的不动点:[-10, -5, -2, 2, 3, 5, 7, 10, 15, 25 , 35, 78, 129]
很好奇人们可能会发现此代码有什么问题。