Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python返回none而不是True/False_Python_Binary Search - Fatal编程技术网

python返回none而不是True/False

python返回none而不是True/False,python,binary-search,Python,Binary Search,我有两个在Python中使用二进制搜索的程序 方案1: def bin(alist,x): if len(alist)==0: return False else: mid=len(alist)//2 if (alist[mid]==x): return True else: if alist[mid] < x: #print(a

我有两个在Python中使用二进制搜索的程序

方案1:

def bin(alist,x):
    if len(alist)==0:
        return False
    else:
        mid=len(alist)//2
        if (alist[mid]==x):
            return True 
        else:
            if alist[mid] < x:
                #print(alist[mid+1:],x)
                bin(alist[mid+1:],x)
            else:   
                #print(alist[:mid],x)
                bin(alist[:mid],x)

print (bin([2,3,5,8,9],8))
print (bin([2,3,5,8,9],7))
方案2:

def bin(alist,x):
     if len(alist)==0:
        return False
     else:
        mid=len(alist)//2
        if (alist[mid]==x):
           return  True
        else:
            if alist[mid]<x:
                return bin(alist[mid+1:],x)
            else:
                return bin(alist[:mid],x)
print(bin([1,5,7,8,9],10))
print(bin([1,4,5,8,9],8))

为什么在你的程序1中,只有当列表是空的或者你在列表中间搜索的值时,它才会返回布尔值,这是因为你明确地说<代码>返回< /代码>如果<代码> LeN(Advult:= 0)< /C>和<代码>当它满足<代码>时返回true <代码>(如果[Strut[MID]=x):< /代码>,对于其他条件,您也必须这样做

def bin(alist,x):
    if len(alist)==0:
        return False
    else:
        mid=len(alist)//2
        if (alist[mid]==x):
            return True 
        else:
            if alist[mid] < x:
                #print(alist[mid+1:],x)
                bin(alist[mid+1:],x)   # -------> return 
            else:   
                #print(alist[:mid],x)
                bin(alist[:mid],x)  # -------> return 
def箱(列表,x):
如果len(alist)==0:
返回错误
其他:
mid=len(alist)//2
如果(alist[mid]==x):
返回真值
其他:
如果[mid]返回
其他:
#打印(列表[:中间],x)
bin(alist[:mid],x)#-->返回

当您递归调用
bin()
方法并期望一个布尔值时,必须在上面突出显示的行中添加return

几天前我回答了同样的问题!一定是来自同一本教科书!您的程序中有
return
,2
return
只返回调用堆栈上一级的值。如果要向上发送多个函数调用的值,则每个函数都需要显式返回值。
False
True
def bin(alist,x):
    if len(alist)==0:
        return False
    else:
        mid=len(alist)//2
        if (alist[mid]==x):
            return True 
        else:
            if alist[mid] < x:
                #print(alist[mid+1:],x)
                bin(alist[mid+1:],x)   # -------> return 
            else:   
                #print(alist[:mid],x)
                bin(alist[:mid],x)  # -------> return