[問題] 新手return範例問題

作者: wheado (principal component QQ)   2017-09-12 19:08:54
教學範例:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quicksort(left) + middle + quicksort(right)
print(quicksort([3,6,8,10,1,2,1]))
# Prints "[1, 1, 2, 3, 6, 8, 10]"
以例子來看,裡面變數應該是如下:
pivot = 3
left = [1,1,2]
middle = [3]
right = [6,8,10]
但是
想請教為何單純 return quicksort(left)
出來的結果是 []
為何 return quicksort(left) + quicksort(middle) + quicksort(right)
結果會是 Error
不了解最後 return 裡面到底是發生甚麼事情。
新手發問,謝謝大家。
作者: stucode   2017-09-12 19:20:00
拿起筆在紙上模擬一下就知道發生什麼事了還是不懂再問你不懂的地方吧
作者: HenryLiKing (HenryLiKing)   2017-09-12 19:49:00
應該是你設計錯誤ㄅ 人在車上有空在看內容
作者: stucode   2017-09-12 19:52:00
return quicksort(left) + middle + quicksort(right)不等於return left + middle + right
作者: zerof (貓橘毛發呆雕像)   2017-09-12 19:53:00
www.pythontutor.com/live.html ?
作者: stucode   2017-09-12 19:54:00
會持續遞迴呼叫 把呼叫的地方再繼續跑下去z大那個網站不錯 可以把code丟進去玩玩看

Links booklink

Contact Us: admin [ a t ] ucptt.com