zoukankan      html  css  js  c++  java
  • python 递归函数

    定义:自己调用自己的函数

    一般规律:if语句,return

    优点:代码简介

    缺点:占用内存

    # 阶乘
    
    
    def sb(n):
        if n == 1:
            return 1
        else:
            return n*sb(n-1)
    
    
    print(sb(4))
    # 斐波那契数列 F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)
    # 1、1、2、3、5、8、13、21、34、……
    def sb(n):
        if n == 1 or n == 2:
            return 1
        elif n >= 3:
            return sb(n-1) + sb(n-2)
    
    
    ret = sb(9)
    print(ret)
    # 二分法查找
    # li = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
    
    
    def sb(_list, _value, _start=0, _end=None):
        _end = len(_list) if _end is None else _end
        if _end <= _start:
            mid = _start + (_end - _start) // 2
            if _list[mid] > _value:
                return sb(_list, _value, _start=_start, _end=mid-1)
            elif _list[mid] < _value:
                return sb(_list, _value, _start=mid+1, _end=_end)
            else:
                return mid
        else:
            return '没有此值'
    
    
    li = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
    print(sb(li, 33))

    PS:递归深度不超过1000(998或997)

    # 修改递归深度
    import sys
    sys.setrecursionlimit(1000)     # 这只是理论的递归深度,实际的和电脑的性能有关
  • 相关阅读:
    Java中的多线程你只要看这一篇就够了
    模板CodeTemplate
    mybatis_mysql
    Kettle 使用Json输入
    图解ByteBuffer
    双队列缓存
    log4j.properties配置详解与实例
    Kettle 使用Json输入
    JSON响应端模拟测试
    使用Kettle导出excel
  • 原文地址:https://www.cnblogs.com/wt7018/p/10872884.html
Copyright © 2011-2022 走看看