錯誤的版本:如何遞歸返回
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:])
答案被張貼等功能,但你應該擡頭該怎麼寫有一個更清潔的方式比這個。 – Pythonista
看到這個可愛的[debug](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)博客尋求幫助。 如果沒有別的,插入一些策略性的'print'語句來跟蹤數據和控制流。不要只是盯着代碼:讓它報告每個點的做法。 – Prune