标签:less 递归 quick code 结束 nbsp 函数 一个 quicksort
递归:
1、函数自己调用自己
2、要有结束递归的条件
def print_num(n):
if n < 0:
return
print(n)
print_num(n-1)
print("******")
print_num(3)
执行结果:
3
2
1
0
****
****
****
****
解释:
"""
n=3:
if n <=0: 不会触发
return
print(n)---》打印了3
print_num(n-1)--》print_num(3-1)-print_num(2)--None
print("*******")#被暂停了,需要等待print_num(2)执行结束
才会执行。
结束递归调用后,打印了一行星号
return None,函数执行完毕了
print_num(2)
n=2:
if n <=0: 不会触发
return
print(n)---》打印了2
print_num(n-1)--》print_num(2-1)-print_num(1)--None
print("*******")#被暂停了,需要等待print_num(1)执行结束
才会执行。
结束递归调用后,打印了一行星号
print_num(1)
n=1:
if n <=0: 不会触发
return
print(n)---》打印了1
print_num(n-1)--》print_num(1-1)-print_num(0)--None
print("*******")#被暂停了,需要等待print_num(0)执行结束
才会执行
结束递归调用后,打印了一行星号
print_num(0):
n=0
if n <=0: 被触发
return
print_num(n-1)--》被短路了,不会执行了
print("*******")---》被短路了,不会执行了
"""
def quickSort(nums): #结束递归的条件:list为空或只有一个元素 if len(nums) <= 1: return nums pivot = nums[0] #设置基准值,作为比较 less = [i for i in nums[1:] if i <= pivot] #比基准值小的元素放在左边 greater = [i for i in nums[1:] if i >= pivot] #比基准值大的元素放在右边 print("less:",less) print("greater:",greater) return quickSort(less) + [pivot] + quickSort(greater) #左边的元素,右边的元素组成的list用递归 if __name__ == "__main__": quickSort([88,99,3,6,77,0,-100])
标签:less 递归 quick code 结束 nbsp 函数 一个 quicksort
原文地址:https://www.cnblogs.com/ff-gaofeng/p/11875410.html