递归
递归的最大深度——997
def foo(n): print(n) n += 1 foo(n) foo(1)
结果就是997
import sys print(sys.setrecursionlimit(100000))
以上是修改递归的最大深度
二分查找法:
什么叫算法
计算的方法 : 人脑复杂 计算机简单
99 * 13 = 1287 = 13*100 - 13
查找 : 找数据
排序 :
最短路径
我们学习的算法 都是过去时
了解基础的算法 才能创造出更好的算法
不是所有的事情都能套用现成的方法解决的
有些时候会用到学过的算法知识来解决新的问题
二分查找算法 必须处理有序的列表
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] #代码实现 def find(l,aim): mid_index = len(l) // 2 if l[mid_index] < aim: new_l = l[mid_index+1 :] find(new_l,aim) elif l[mid_index] > aim: new_l = l[:mid_index] find(new_l, aim) else: print('找到了',mid_index,l[mid_index]) find(l,66)
def find(l,aim,start = 0,end = None): end = len(l) if end is None else end mid_index = (end - start)//2 + start if start <= end: if l[mid_index] < aim: print(l[mid_index+1:end]) return find(l,aim,start =mid_index+1,end=end) elif l[mid_index] > aim: print(l[start:mid_index-1]) return find(l, aim, start=start, end=mid_index-1) else: return mid_index else: return '找不到这个值' 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] ret= find(l,42) print(ret)
# 菲波那切数列 第n个斐波那契额数是多少
def fibo(i): if i == 0 or i == 1: return 1 else: return fibo(i - 1) + fibo(i - 2) print(fibo(3))
# 阶乘,3! 3*2*1
def factorial(x): if x<0: print ('wrong enter') elif x==0 or x==1: return 1 else: return x*factorial(x-1) j=factorial(3) print(j)