码迷,mamicode.com
首页 > 其他好文 > 详细

递归函数,二分查找

时间:2018-03-03 21:54:13      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:print   log   glob   修改   style   one   dep   递归函数   col   

一、递归的定义

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

 





 

递归函数,二分查找

标签:print   log   glob   修改   style   one   dep   递归函数   col   

原文地址:https://www.cnblogs.com/lara0520/p/8503111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!