zoukankan      html  css  js  c++  java
  • 递归、二分查找法

    递归:就是函数在运行的过程中调用自己

    • 缺点:占内存
    • 优点:会让代码变简单

    递归中的返回值:

    • 不要看到return就认为已经返回了,要看返回操作是在递归到第几层的时候发生的,然后返回给了谁
    • 如果不是返回给最外层函数,调用者就接收不到,需要再分析,看如何把结果返回回来

    用递归实现阶乘:

    def func(n):
        print(n)  # 4 3 2 1 0
        if n == 0:  # 等于0就运算完了
            return 1
        return n * func(n - 1)  # 每次递归相乘,n值都比之前小1
    
    ret = func(4)
    print(ret)  # 24

    二分查找法:

    l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    def b_search(l, inp, start=0, end=None):
        if inp <= l[len(l)-1]:
            end = len(l) if end is None else end
            mid_index = (end - start)//2 + start
            if start <= end:
                if l[mid_index] < inp:
                    return b_search(l, inp, start=mid_index+1, end=end)
                elif l[mid_index] > inp:
                    return b_search(l, inp, start=start, end=mid_index-1)
                else:
                    return mid_index
            else:
                return "这个值不存在"
        else:
            return "这个值不存在"
    
    
    inp = int(input("请输入一个数字:"))
    ret = b_search(l, inp)
    print(ret)
  • 相关阅读:
    c#备忘知识点
    [置顶] IE6支持的滑动菜单栏
    摩斯电碼中英文对照表
    2013年5月15日星期三
    2013年5月9日星期四
    2013年5月12日16:20:43母亲节
    2013年5月8日星期三
    JS前端DOM中Range疑问
    2013年5月14日星期二
    2013年5月13日星期一
  • 原文地址:https://www.cnblogs.com/believepd/p/9610397.html
Copyright © 2011-2022 走看看