Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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,尽管我将返回值指定为-1_Python_Binary Search - Fatal编程技术网

Python 我的二进制搜索函数在未找到目标时返回none,尽管我将返回值指定为-1

Python 我的二进制搜索函数在未找到目标时返回none,尽管我将返回值指定为-1,python,binary-search,Python,Binary Search,当这个函数没有找到目标时,它会返回None而不是-1,这是为什么?如何解决它?在函数末尾的两个递归调用前面添加return在函数末尾的两个递归调用前面添加return您忘记了第8行、第9行[递归调用]前面的return 因此,最终的代码是: def binary_search_recursive(array, target, start_index, end_index): middle_index=(start_index+end_index)//2 if start_index>end

当这个函数没有找到目标时,它会返回None而不是-1,这是为什么?如何解决它?

在函数末尾的两个递归调用前面添加
return

在函数末尾的两个递归调用前面添加
return
您忘记了第8行、第9行[递归调用]前面的
return

因此,最终的代码是:

def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
    return -1
if array[middle_index]==target:
    return middle_index
if array[middle_index]>target:
    binary_search_recursive(array,target,start_index,middle_index-1)
else: binary_search_recursive(array,target,middle_index+1,end_index)

您忘记了第8行、第9行[递归调用]之前的
return

因此,最终的代码是:

def binary_search_recursive(array, target, start_index, end_index):
middle_index=(start_index+end_index)//2
if start_index>end_index:
    return -1
if array[middle_index]==target:
    return middle_index
if array[middle_index]>target:
    binary_search_recursive(array,target,start_index,middle_index-1)
else: binary_search_recursive(array,target,middle_index+1,end_index)

我建议使用elif,只是为了更干净的代码。另外,如果您显示通过函数传递的参数也很好,我建议使用elif,只是为了更干净的代码。另外,如果显示通过函数传递的参数也会很好