斐波那契数列的形式是后一位数是前两位数之和,以此类推

具体表现为:1  2  3  5  8  13  21  34  55 .....

# -*- coding: utf-8 -*-
# File  : 迭代器实现斐波那契数列.py
# Author: HuXianyong
# Date  : 2018-07-10 09:20

#方法一,用一个类的迭代器去做斐波那契数列
import time
class Foo:
    def __init__(self,m,n):
        self.n=n
        self.m=m
    def __iter__(self):
        return self
    def __next__(self):
        if self.m > 500:
            exit()
        self.n,self.m = self.m,self.n+self.m
        return self.n
f1=Foo(1,1)
for i in f1:
    time.sleep(1)
    print(i)


#方法二:函数公式形式的斐波那契数列

import time
def item(num):
    if num == 0:
        res = 0
    elif num == 1:
        res = 1
    else:
        res = item(num -1) +item(num - 2 )
    return res
i=0
while i < 9:
    print(item(i))
    time.sleep(1)
    i+=1


方法三:迭代形式加入列表的斐波那契数列

def fibo(num):
    numList  = [0,1]
    for i in range(num -2):
        numList.append(numList[-2] + numList[-1])
    return numList
print(fibo(10))

def fibo(n):
    x, y = 0, 1
    while(n):
        x,y,n = y,x+y,n-1
    return x
print(fibo(10))