1. 程式人生 > >遞歸函數,二分查找

遞歸函數,二分查找

OS star rec post 計算 fun 二分查找 什麽 10個

一、遞歸的定義

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





 

遞歸函數,二分查找