Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.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 将迭代函数修改为递归函数_Python_Algorithm - Fatal编程技术网

Python 将迭代函数修改为递归函数

Python 将迭代函数修改为递归函数,python,algorithm,Python,Algorithm,我有一个交互函数,它接受一系列整数,并返回目标项的索引位置或目标应插入的位置。(如果该项不在列表中) 该函数工作得很好,但我正在尝试找出在没有任何辅助函数的帮助下,将该函数从迭代实现更改为递归实现的最简单的方法 def binary_search(a_list, first, last, target): """a sequence of integers, index of first item, index of last item, target to search for """

我有一个交互函数,它接受一系列整数,并返回目标项的索引位置或目标应插入的位置。(如果该项不在列表中)

该函数工作得很好,但我正在尝试找出在没有任何辅助函数的帮助下,将该函数从迭代实现更改为递归实现的最简单的方法

def binary_search(a_list, first, last, target):
    """a sequence of integers, index of first item, index of last item, target to search for """

    while first <= last:
        middle = (first + last) // 2
        if a_list[middle] == target:
            return middle
        if target < a_list[middle]:
            last = middle - 1
        else:
            first = middle + 1
    return first

print(binary_search([2, 5, 8, 11, 17], 0, 4, 5))
def二进制搜索(一个列表,第一个,最后一个,目标):
“”“整数序列、第一项索引、最后一项索引、要搜索的目标”“”
首先,这个怎么样

def binary_search_recursive(a_list, first, last, target):
    middle = (first + last) // 2
    number = a_list[middle]

    if first > last:
        return first
    if number == target:
        return middle
    if target < number:
        return binary_search_recursive(a_list, first, middle-1, target)
    else:
        return binary_search_recursive(a_list, middle+1, last, target)
def binary_search_recursive(一个列表,第一个,最后一个,目标):
中间=(第一个+最后一个)//2
数字=列表[中间]
如果第一个>最后一个:
先返回
如果数字==目标:
返回中间
如果目标<数字:
返回二进制搜索递归(列表,第一,中间-1,目标)
其他:
返回二进制搜索递归(一个列表,中间+1,最后一个,目标)
编辑:代码中有一个小错误,现已更正