我想知道递归函数能够在没有返回调用的情况下到达其主体末端时会发生什么?

问题描述 投票:0回答:1

最近,我刷新了有关快速排序算法的知识。我知道列表(Python)是通过引用传递的,因此对其条目所做的任何更改都将反映在函数调用之外。该算法使用递归而不使用return语句。我想知道函数到达其主体末端后会发生什么。 return语句(如果存在)在“弹出”堆栈之前将值传回立即调用者(如果我错了,请更正我)。这一直持续到到达最后一个呼叫者为止。如果没有回叫,那么上述过程会发生吗?

def quick_sort(arr,low,high):
    # the Breaking statement
    if (low < high):
       # Partitoning
        div = partition(arr,low,high)
        quick_sort(arr,low,div) 
        quick_sort(arr,div+1,high)

def partition(arr,low,high):
    pivot = arr[low]
    minIndex = low;
    for i in range(low+1,high):
        if arr[i] <= pivot:
            minIndex += 1
            arr[minIndex],arr[i] = arr[i],arr[minIndex]
    arr[minIndex],arr[low] = pivot,arr[minIndex];
    return  minIndex
python recursion
1个回答
0
投票

当python函数到达末尾时,它返回None。

https://www.askpython.com/python/python-return-statement

因此,最后一次调用quick_sort会返回None,然后上一个调用到达其自己的末尾时将返回None,依此类推,直到第一次调用为止。

但是由于您不使用quick_sort的返回值(至少在您提供的代码中,所以返回值没有关系。

© www.soinside.com 2019 - 2024. All rights reserved.