如果递归函数返回到开头,它如何操作?

问题描述

我是一个新手程序员

我正在查找使用递归函数的问题。虽然我能理解要点,但有一个不清楚的问题,我在调试过程中无法立即破译。感谢您对我的问题的帮助。

问题的概念(合并排序)非常简单,但我对递归函数的一般工作方式感到困惑。 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 (将#修改为@)