一、递归的定义
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))