斐波那契数列 Fibonacci number
1, 1, 2, 3, 5, 8, 13, 21, 34, 5 ... ...
如果F(n) 为 该数列的第 n 项,那么有如下形式: F(n)=F(n-1)+F(n-2)
使用循环的方式实现:
def fab(n): pre = 1 cur = 1 print(pre,cur,end=" ") # loop for i in range(n-2): pre, cur = cur, cur+pre print(cur,end=" ") fab(10)
使用递归 Recursion的方式实现:
---此处递归存在极大的效率问题,有不断压栈,创建栈针,依次弹出的过程;且递归深度受限 ,最大递归次数默认为 1000次
def fab(n): # if n < 2: # return 1 # return fab(n-1)+fab(n-2) return 1 if n<2 else fab(n-1)+fab(n-2) for i in range(10): print(fab(i),end=" ")
递归 实现方式的优化:
def fab(n, pre=0, cur=1): if n < 1: return pre, cur = cur, pre+cur print(pre,end=" ") fab(n-1, pre, cur) fab(10)生成器实现
def func(): x = 0 y = 1 while True: yield y x, y = y, x+y foo = func() for i in range(10): print(next(foo),end=" ")