我得到None作为返回值,代码无法按预期工作,search()在第4行返回None。为什么?
我正在尝试在类的函数内调用search()函数。内部函数返回外部函数似乎是一个问题。
class Solution:
def singleNonDuplicate(self, nums):
n = len(nums)
ans = self.search(nums, 0, n-1)
return ans
def search(self,l,low,high):
if low == high: # base case
return (l[high])
else:
mid = low + (high-low)//2 # evaluate mid
if mid%2 == 0:
if l[mid] == l[mid + 1]:
self.search(l,mid+2,high)
else:
self.search(l,low,mid)
else:
if l[mid] != l[mid+1]:
self.search(l,mid+1,high)
else:
self.search(l,low,mid)
答案 0 :(得分:0)
您缺少递归函数其余部分的返回值-每次递归(称为self.search)时,您都必须返回该值-最终该结果将构成该链。
class Solution:
def singleNonDuplicate(self, nums):
n = len(nums)
ans = self.search(nums, 0, n-1)
return ans
def search(self,l,low,high):
if low == high: # base case
return (l[high])
else:
mid = low + (high-low)//2 # evaluate mid
if mid%2 == 0:
if l[mid] == l[mid + 1]:
return self.search(l,mid+2,high)
else:
return self.search(l,low,mid)
else:
if l[mid] != l[mid+1]:
return self.search(l,mid+1,high)
else:
return self.search(l,low,mid)