一. 递归调用
在调用一个函数过程中又直接或间接地调用了函数自身
条件: 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)