zoukankan      html  css  js  c++  java
  • 递归函数,二分查找

    一、递归的定义

    1.什么是递归?
    在一个函数里再调用这个函数本身
    2.最大递归层数做了一个限制:997,但是也可以自己限制

    1)默认递归层数
    def  foo(n):
        print(n)
        n+=1
        foo(n)
    foo(1)
    (2)修改递归层数
    import sys
    sys.setrecursionlimit(2000)  #修改递归层数
    n = 0
    def f():
        global n
        n += 1
        print(n)
        f()
    f()

    3.斐波那契数列,第10个数是多少?(递归函数写)

    def f5(depth,a1,a2):
        if depth == 10:
            return a2
        a3 = a1 + a2
        return f5(depth + 1,a2,a3)
    print(f5(1,0,1))
    
    
    def fib(n,a=0,b=1):     #算法
        if n==1 or n == 2:
            return a+b
        else:
            return fib(n-1,b,a+b)
    print(fib(10))
    二、算法 计算的方法
    l = [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]
    找出66和他的位置
    def func(li,aim,start = 0 , end = None):
        if end == None:
            end = len(li) - 1
        if start <= end:
            mid = end - start // 2 + start
            if li[mid] > aim:
                return func(li,aim,start = start,end = mid - 1)
            elif li[mid] < aim:
                return  func(li,aim,start = mid + 1,end = end)
            elif li[mid] == aim:
                return li[mid],mid
        else:
            print("没在")
    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(func(li,66))
    
    
    




     
  • 相关阅读:
    [无聊测试赛] T12 道路
    [无聊测试赛] T9 矩阵覆盖
    [无聊测试赛] T10 所驼门王的宝藏
    [无聊测试赛] T8 佳佳的魔法药水
    [无聊测试赛] T7 豪华游轮
    [无聊测试赛] T6 排行榜
    【模板】三分求函数极值
    树的重心模板
    倍增最近公共祖先(LCA)
    ccf201612题解
  • 原文地址:https://www.cnblogs.com/lara0520/p/8503111.html
Copyright © 2011-2022 走看看