为什么在由singleNonDuplicate()函数调用self.search()时不返回None?

时间:2020-05-12 20:43:44

标签: python python-3.x

我得到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)

1 个答案:

答案 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)
相关问题