【发布时间】:2017-05-10 21:45:37
【问题描述】:
我正在尝试为在线课程实现递归合并流并且有一个小问题。
分而治之的代码如下所示:
def __recursive_mergesort(arr, aux, lo, hi):
if hi <= lo:
return
mid = lo + (hi - lo) // 2
__recursive_mergesort(arr, aux, lo, mid)
__recursive_mergesort(arr, aux, mid + 1, hi)
# Call merge here...
def mergesort(x):
aux = [0] * len(x)
__recursive_mergesort(x, aux, 0, len(x) - 1)
return x
但是,当我这样做时:
def __recursive_mergesort(arr, aux, lo, hi):
if hi <= lo:
return
mid = lo + (hi - lo) // 2
__recursive_mergesort(arr, aux, lo, mid)
__recursive_mergesort(arr, aux, mid, hi)
# Call merge here...
def mergesort(x):
aux = [0] * len(x)
__recursive_mergesort(x, aux, 0, len(x))
return x
这超出了最大递归深度。据我所知,我没有更改逻辑,并且在调试时遇到了麻烦。当然,这里潜伏着一个微妙或不那么微妙的错误,但对于我的生活,我无法弄清楚为什么第一个版本运行而不是第二个版本。
【问题讨论】:
标签: python recursion mergesort