Python 我不明白为什么这里会有最大的递归深度
我有这样的功能:Python 我不明白为什么这里会有最大的递归深度,python,sorting,recursion,Python,Sorting,Recursion,我有这样的功能: def sort(lst, beg, end): mid = (beg + end)/2 sort(lst, beg, mid) sort(lst, mid, end) i = 0 j = 0 for l in range(beg, end): if j > end - mid or (i <= mid - beg and lst[beg + i] < lst[mid + j]):
def sort(lst, beg, end):
mid = (beg + end)/2
sort(lst, beg, mid)
sort(lst, mid, end)
i = 0
j = 0
for l in range(beg, end):
if j > end - mid or (i <= mid - beg and lst[beg + i] < lst[mid + j]):
lst[l] = lst[beg + i]
i = i + 1
else:
lst[l] = lst[mid + j]
j = j + 1
如何修复此问题?您缺少一个条件,该条件将阻止您递归。在当前的实现中,您将无限期地继续 e、 g:
没有任何东西可以阻止递归。每次调用sort时,它都会调用自身2次。应该有一个条件语句。对when end@Smith执行基本情况检查,因为您没有在“sort”函数中返回列表。您正在直接更改/移动列表项。调用“排序”功能后,是否可以打印列表?
RuntimeError: maximum recursion depth exceeded
def sort(lst, beg, end):
if end - beg <= 1:
return
mid = (beg + end)/2
sort(lst, beg, mid)
sort(lst, mid, end)
# rest of code