函数返回None而不是使用递归的二进制搜索中的值

时间:2018-08-17 08:19:32

标签: python python-3.x binary-search

我已经阅读了python recursive function returning none instead of stringRecursive code returns None之类的答案 但我无法将其放置在哪里:-

您可能希望在最后一行返回:

返回isIn(char,aStr) 没有它,该函数在终止时只会返回None,而不会看到返回。

代码详细信息:-

我已经使用Python中的递归编写了用于二进制搜索的代码。我有一个元素列表:-

list = [1、2、3、4、5、12、122]

当我搜索中间元素(即4)时,我得到了正确的输出。

我搜索12时,一切正常。我要搜索的项目(12)等于(4和6)的中间值,即5。

所以12 == list [5]

该函数应返回true,但返回None。

P.S:-我不需要新的解决方案。我想知道我的代码出了什么问题。

代码:-

def position(list,l,r,item):
    print(l,r)
    mid = (l+r)/2
    mid =int(mid)
    print("Mid--->",mid)
    print(item,list[mid])
    if item == list[mid]:
        print "True"
        return 'mid',mid

    elif item> list[mid]:
        return ('right',mid)
    elif item< list[mid]:
        return 'left',mid

def binarySearch(arr,left,right,item):
    count = 0
    if left != right:
        index,mid = position(arr,left,right,item)
        print("-----------INDEX",index)
        if index is 'mid':
            return True
        if index is 'right':
            binarySearch(arr,mid+1,right,item)

        if index is 'left':
            binarySearch(arr,left,mid,item)

item = int(raw_input("Enter number "))

list = [4,5,2,1,3,12,122]
list.sort()
print(list)

x = binarySearch(list,0,len(list)-1,item)
print(count)
if x is True:
    print "Found"
else:
    print "Not Found"

当item = 12时输出:-

Enter number 12
[1, 2, 3, 4, 5, 12, 122]

(0, 6)

('Mid--->', 3)

(12, 4)

('-----------INDEX', 'right')

(4, 6)

('Mid--->', 5)

(12, 12)

True

('-----------INDEX', 'mid')

None

Not Found

0 个答案:

没有答案