递归函数,二分查找

Posted lara0520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数,二分查找相关的知识,希望对你有一定的参考价值。

一、递归的定义

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))

 





 

以上是关于递归函数,二分查找的主要内容,如果未能解决你的问题,请参考以下文章

python递归函数及二分法查找

python函数:递归函数及二分查找算法

递归函数与二分查找算法

14 内置函数 递归 二分法查找

找数字(递归,二分查找)

Python-----递归函数,二分查找