Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 递归如何返回_Python_Algorithm_Recursion - Fatal编程技术网

Python 递归如何返回

Python 递归如何返回,python,algorithm,recursion,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合并排序: 如果(len)您没有返回原始

错误版本:

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合并排序:

如果(len)您没有返回原始数据,那么它会被递归修改,当您只是“查看该方法”时,您只会看到该过程的第一次和最后一次迭代

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


递归返回的结果与其他函数返回的结果没有什么不同,但是你应该查看如何编写递归,有一种更简洁的方法。请参阅这个可爱的博客以获取帮助。如果没有其他帮助,请插入两条战略性的
print
语句来跟踪数据和控制流。不要只盯着代码看:让它报告什么它在每一点上都在做。谢谢,如果我不想更改分区函数,我应该在快速排序中更改什么?我想说,您最初的问题只是关于递归和合并排序,请将您的帖子限制为单数问题,并在单独的函数中具体询问快速排序。另外,因为我看不到您的分区函数,所以我不能即使说出代码有什么问题谢谢,这是我第一次在stackoverflow中提问,我没有清楚地描述,我不知道该如何感谢您的回答。欢迎您编辑您的问题,以重新表述您想要的内容
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:])