用于查找数字位置的递归函数(python)

时间:2018-05-24 21:46:36

标签: python list recursion position

我有这项工作(python)要做,我无法想办法解决这个问题。 任何人都可以帮助我吗?

创建一个递归函数,给定一个有序数字列表和一个数字,返回元素的位置等于数字或立即高于数字。要找到位置,请实现二进制搜索算法:

1-将给定数字与列表中心位置的数字进行比较。

2-如果数字较小,请重复第一步到列表的前半部分。

3-如果数字较高,请重复第一步到列表的后半部分。

4-重复这些步骤,直到找到相同的数字或直到搜索区域缩小为仅一个元素。

1 个答案:

答案 0 :(得分:0)

您已经知道了这些步骤。所以它只是实现它们的问题。找到中心位置并应用步骤。

def f(numbers, n, start, end):
    middle = (end-start) // 2
    if numbers[middle] == n:
        return middle
    if end - start == 1:
        return 'not found'
    if numbers[middle] < n:
        return f(numbers, n, start, middle)
    else:
        return f(numbers, n, middle, end)