一. 递归调用
在调用一个函数过程中又直接或间接地调用了函数自身
条件: 1. 每进入下一次递归调用,问题的规模都有所减少
2. 递归必须有一个明确的结束条件
阶段: 回溯和递推
# 打印出 lis=[1,[2,[3,[4,[5,[6,[7,[8,]]]]]]]] 中的每一个数字
lis=[1,[2,[3,[4,[5,[6,[7,[8,]]]]]]]]
def func(list1):
for item in list1:
if type(list1) is not list:
print(item)
else:
func(item)
func(lis)
二. 二分查找法
在有序排列中找到给定的数,可以将制定的数和有序排列的中间数做比较,若小于中间数,则再与前一半数的中间数做对比,一次类推
# 例: 在nums=[3,5,7,11,13,23,24,76,103,111,201,202,250,303,341] 中查看是否有201 这个数
nums=[3,5,7,11,13,23,24,76,103,111,201,202,250,303,341]
def search_number(list1, number):
if len(list1)==0:
print ('没找到')
return
else:
mid_index=len(list1) //2
mid_num=list1[mid_index]
if number<mid_num:
list1=list1[:mid_index]
search_number(list1,number)
elif number > mid_num:
list1=list1[mid_index+1:]
search_number(list1,number)
else:
print('找到了')
search_number(nums,22)
浙公网安备 33010602011771号