簡體   English   中英

RecursionError:比較中超出最大遞歸深度:遞歸 function

[英]RecursionError: maximum recursion depth exceeded in comparison : Recursive function

我不明白為什么會出現這個最大深度錯誤。 我正在嘗試使用 bst 遞歸方法查找數組中的數字索引,下面是我的代碼

# Binary Search Tree using recursion


def search(arr,target,s,e):
    middle = s + (e - s) // 2

    if s > e:
        return -1

    if target == arr[middle]:
        return middle

    if target < arr[middle]:
        return search(arr,target,s,middle-1)

    return search(arr,target,s,middle+1)


ARR = [1,2,3,4,5,6,7,8,9,10]
k = search(ARR,9,0,len(ARR) - 1)
print(k)

誰能告訴我代碼塊中發生了什么

錯誤塊:

PS C:\Users\admin\Desktop\DSA> & C:/Users/admin/AppData/Local/Programs/Python/Python310/python.exe c:/Users/admin/Desktop/DSA/recursion/bst.py Traceback (最近一次通話最后一次):文件“c:\Users\admin\Desktop\DSA\recursion\bst.py”,第 20 行,在 k = search(ARR,9,0,len(ARR) - 1) File“ c:\Users\admin\Desktop\DSA\recursion\bst.py",第 16 行,在搜索中
return search(arr,target,s,middle+1) 文件“c:\Users\admin\Desktop\DSA\recursion\bst.py”,第 16 行,在搜索中
return search(arr,target,s,middle+1) 文件“c:\Users\admin\Desktop\DSA\recursion\bst.py”,第 16 行,在搜索中
return search(arr,target,s,middle+1) [上一行重復了 995 次] 文件“c:\Users\admin\Desktop\DSA\recursion\bst.py”,第 7 行,在搜索中
if s > e: RecursionError: 比較時超出了最大遞歸深度

最后一種情況應該是search(arr,target,middle,e)

按照您的編碼方式,它總是搜索數組的前半部分,最終達到遞歸限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM