问题描述
我是一个新手程序员
我正在查找使用递归函数的问题。虽然我能理解要点,但有一个不清楚的问题,我在调试过程中无法立即破译。感谢您对我的问题的帮助。
问题的概念(合并排序)非常简单,但我对递归函数的一般工作方式感到困惑。 Bellow 是我正在处理的程序(来自佐治亚理工学院 Python 课程):
def mergesort(lst):
if len(lst) <= 1:
return lst
else:
midpoint = len(lst) // 2
left = mergesort(lst[:midpoint])
right = mergesort(lst[midpoint:])
newlist = []
while len(left) and len(right) > 0:
if left[0] < right[0]:
newlist.append(left[0])
else:
newlist.append(right[0])
del right[0]
newlist.extend(left)
newlist.extend(right)
return newlist
print(mergesort([2,5,3,8,6,9,1,4,7]))
问题:当程序到达这一行 left = mergesort( lst[:midpoint])
时会发生什么?
根据我的理解,它返回到程序的第一行,然后再次返回到同一行(就像 for
一样)。
所以它一直在返回!!!但是,这使我无法阅读该程序。一般来说,程序如何处理递归函数是我的主要问题。我无法理解它的工作方式。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)