码迷,mamicode.com
首页 > 其他好文 > 详细

斐波那契数列数列三种实现方式

时间:2018-04-08 10:46:59      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:Python   斐波那契数列   生成器   迭代器   函数   

通过迭代器实现:
class FibIterator(object):
    def __init__(self, n):
        self.n = n
        # 是使用current保存当前数列中第几个数
        self.current = 0
        # 使用num1保存数列中前一个数,初始值为0
        self.num1 = 0
        # 使用num2保存数列中后一个数,初始值为1
        self.num2 = 1

    def __next__(self):
        # 判断迭代当前个数小于我们输入数字
        if self.current < self.n:
            num = self.num1
            # 数列核心代码
            self.num1, self.num2 = self.num2, self.num1+self.num2
            self.current += 1
            return num
        else:
            # 迭代完成抛出异常,停止迭代
            raise StopIteration

    def __iter__(self):
        # 迭代器标志 ,返回自身
        return self

# 程序入口
if __name__ == ‘__main__‘:
    fib = FibIterator(5)
    for num in fib:
        print(num, end=" ")
输出结果:
0 1 1 2 3

通过生成器实现:

def fib(n):
    current = 0
    num1, num2 = 0, 1
    while current < n:
        num = num1
        num1, num2 = num2, num1+num2
        current += 1
        yield num
    return

if __name__ == ‘__main__‘:
    f = fib(5)
    for _ in fib(5):
        print(next(f), end=" ")
输出结果:
0 1 1 2 3

通过函数实现

def fibonacci(n):
    a, b = 0, 1
    fib_list = [0,]
    for _ in range(n - 1):
        a, b = b, a + b
        fib_list.append(a)
    return fib_list
print(fibonacci(9))
输出结果:
[0, 1, 1, 2, 3, 5, 8, 13, 21]

斐波那契数列数列三种实现方式

标签:Python   斐波那契数列   生成器   迭代器   函数   

原文地址:http://blog.51cto.com/10412806/2095505

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!