我已经阅读了python recursive function returning none instead of string和Recursive 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