递归函数,二分查找

一、递归的定义

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

 





 
posted @ 2018-03-03 21:33  树叶有花  阅读(165)  评论(0编辑  收藏  举报