函数递归&二分法
递归
递归是函数自己调用自己的一种使用方式,是函数嵌套调用的一种特殊形式。
递归的两个条件:
- 调用自己(直接或间接);
- 终止条件;
递归的两个阶段:
- 回溯:一层一层调用下去;
- 递推:满足给递归结束条件,结束递归调用,然后一层一层返回;
递归应用
# 遍历列表内的数字
l=[1,2,[3,[4,[5,[6,[7,[8,[9,10,11,[12,[13,]]]]]]]]]]
def get_items(li):
for item in li:
if isinstance(item, list):
get_items(item)
else:
print(item, end=' ')
get_items(l)
递归调用的方式还有很多,比如汉诺塔问题、斐波那契数列等。
递归执行顺序
二分法
二分法又称折半法,它主要用在有序列表的元素查找场景中。对于有序的序列,每次比较待查元素和列表中间位置元素比较大小。如果相等,则找到;如果小于中间值,则比较待查元素和中间值左边的元素;如果大于中间值,则比较待查元素和中间值右边的元素。循环重复。这种折半查找法,每次查找都会减半查找的范围。适用于数据量庞大需要找到某个数据的场景。
优点:查找速度快
缺点:是适用有序的数据查找
二分查找算法实现的方式很多,具体参考这篇博客。