在特定算法领域有经验的程序员如何看待递归,他们如何看待它?
我解析快速排序,充当解释器,并开始对递归感到困惑。
def quick_sort(alist):
if len(alist) <= 1:
return
barr = alist[0]
left = []
mid = []
right = []
for i in range(len(alist)):
if alist[i] < barr:
left.append(alist[i])
elif alist[i] > barr:
right.append(alist[i])
else: #alist[i] == bar
mid.append(alist[i])
quick_sort(left) # Отсортировать левую часть
quick_sort(right) # Отсортировать правую часть
k=0
for x in left+mid+right:
alist[k] = x
k+=1
return alist
alist = [2,3,4,1]
print(quick_sort(alist))
在许多视频课程中,在一行代码中,当一个函数被自己调用时,老师引用该函数就好像它已经编写好了一样。
真的这么简单吗?你甚至不应该尝试像普通函数那样阅读递归函数。
如何在这个算法的上下文中阅读递归是特别有趣的!
PS。我知道递归的规则:从头开始阅读,基本情况,递归关系。