• 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)     # 这只是理论的递归深度,实际的和电脑的性能有关
  • 相关阅读:
    linux服务器网络配置
    全面了解linux服务器
    centos selinux学习记录
    centos7使用samba共享文件
    centos7修改yum下载源为阿里源
    ubuntu14.04使用samba共享文件
    计算两个经纬度之间的距离(python算法)
    awk中的冒泡排序
    linux awk时间计算脚本
    linux shell中FS、OFS、RS、ORS图解
  • 原文地址:https://www.cnblogs.com/wt7018/p/10872884.html
Copyright © 2020-2023  润新知