函数的递归调用:
在调用一个函数的过程中又调用了自己
函数的递归调用本质就是一个循环的过程>>>用函数来实现的循环
注意:递归调用必须在满足某种条件下结束,不能无限递归调用下去
递归有两个阶段:
1、回溯>>>一层层向下挖井
2、递推>>>一层层向上爬出来
以二分法举例:
nums = [-3, 4, 7, 13, 17, 21, 27, 98, 102, 108]
find_num = 17
def find(nums, find_num):
print(nums)
if len(nums) == 0 or find_num > nums[-1] or find_num < nums[0]:
print('not exist')
return
mid_index = len(nums) // 2
if nums[mid_index] < find_num:
# in the right
new_nums = nums[mid_index + 1:]
# 在函数中调用自己
find(new_nums, find_num)
elif nums[mid_index] > find_num:
# in the left
new_nums = nums[:mid_index]
# 在函数中调用自己
find(new_nums, find_num)
else:
print('find it')
find(nums, find_num)