函数递归&二分法

递归

递归是函数自己调用自己的一种使用方式,是函数嵌套调用的一种特殊形式。

递归的两个条件:

  • 调用自己(直接或间接);
  • 终止条件;

递归的两个阶段:

  • 回溯:一层一层调用下去;
  • 递推:满足给递归结束条件,结束递归调用,然后一层一层返回;

递归应用

# 遍历列表内的数字
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)

递归调用的方式还有很多,比如汉诺塔问题、斐波那契数列等。


递归执行顺序


二分法

二分法又称折半法,它主要用在有序列表的元素查找场景中。对于有序的序列,每次比较待查元素和列表中间位置元素比较大小。如果相等,则找到;如果小于中间值,则比较待查元素和中间值左边的元素;如果大于中间值,则比较待查元素和中间值右边的元素。循环重复。这种折半查找法,每次查找都会减半查找的范围。适用于数据量庞大需要找到某个数据的场景。

优点:查找速度快

缺点:是适用有序的数据查找

二分查找算法实现的方式很多,具体参考这篇博客

posted @ 2020-03-25 16:30  the3times  阅读(248)  评论(0编辑  收藏  举报