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:])