递归返回函数

问题描述 投票:0回答:2

了解returnrecursion语句的使用

例如,在二进制搜索中:

def binary_search_recur(array,start,end,item):

    middle = int((start+end)/2)
    #print (middle)
    if (start>end):
        return -1
    else:   
        if array[middle]==item:
            return middle
        elif array[middle]>item:
            return binary_search_recur(array,start,middle-1,item)
        else:
            return binary_search_recur(array,middle+1,end,item)

使用]调用函数>

array = [27,45,76,81,92,101,291]
binary_search_recur(array,0,len(array)-1,27)

如果我到处都添加return语句,效果很好,但是如果我删除如下所示的0语句,它不会返回return(示例中搜索元素的索引)

else:   
      if array[middle]==item:
           return middle
      elif array[middle]>item:
           binary_search_recur(array,start,middle-1,item) #retrun statement removed
      else:
           binary_search_recur(array,middle+1,end,item)   #retrun statement removed

我的意思是,当我找到该元素时,我想返回它,以便返回索引middle,或者如果该元素根本不存在,那么在这种情况下,我返回-1,否则我只是在调用函数以更新的startend索引递归,就像合并排序

merge_sort(l)
merge_sort(r)
merge(l,r,array)

所以我不明白为什么删除示例中的return语句不会返回op。任何建议都很好。

了解在递归中使用return语句的示例,例如在Binary Search中:def binary_search_recur(array,start,end,item):middle = int((start + end)/ 2)#print(middle)if(start&。 。

python recursion binary-search
2个回答
1
投票

循环函数的想法是它使用新的参数或最终值返回对自身的新执行。


0
投票

让我们考虑以下输入

© www.soinside.com 2019 - 2024. All rights reserved.