递归如何返回

时间:2017-05-30 02:26:01

标签: python algorithm recursion

错误的版本:

def mergeSort(s):
    if(len(s)<=1):
        return s
    else:
        mid=len(s)/2
        front=s[:mid]
        back=s[mid:]
        mergeSort(front)       
        mergeSort(back)
        return merge(front,back)

正确版本:

def mergeSort(s):
    if(len(s)<=1):
        return s
    else:
        mid=len(s)/2
        front=mergeSort(s[:mid])
        back=mergeSort(s[mid:])        
        return merge(front,back)

为什么在错误的版本中返回原点数组?递归过程中两个版本之间有什么区别? 同样的快速排序混乱,请帮我改进代码,谢谢。如果我想在进程后返回数据而不返回原始数据,请解释我应该如何处理递归返回。

def QuickSort(seq):
    if(len(seq)<=0):        
        return seq
    else:
        j=partion(seq)
        left=QuickSort(seq[:j])        
        right=QuickSort(seq[j+1:])

1 个答案:

答案 0 :(得分:0)

您没有返回原始数据,它是递归修改的,当您只是“查看方法”时,您只能看到该过程的第一次和最后一次迭代。

您的第一个版本错误,因为您从未“捕获”然后返回合并数组

递归返回与其他函数没有什么不同