斐波那契数列(Fibonacci)三种方法实现

440 阅读1分钟

1. 列表输出

def Fibonacci_li(num):
    a = 0
    b = 0
    li = []
    for i in range(num):
        li.append(a)
        a, b = b, a + b
    return li

print(fibonacci(10))

# 输出结果:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

2. 递归输出

# 获取相应下标的数据
def Fibonacci(num):
    # 退出条件
    if num == 0:
        return 0
    elif num == 1:
        return 1
    else:
        return Fibonacci(num - 1) + Fibonacci(num - 2)

print(fibonacci(9))

# 输出结果:34
# 递归是很好理解的一个方法,但却是效率最低的方法

3. 生成器输出

class Fibonacci(object):
    def __init__(self, all_num):
        self.a = 0
        self.b = 1
        self.all_num = all_num
        self.current_num = 0

    def __iter__(self):
        # 返回这个可迭代对象本身
        return self

    def __next__(self):
        # 具体实现方法
        if self.current_num < self.all_num:
            ret = self.a
            self.a, self.b = self.b, self.a + self.b
            self.current_num += 1
            return ret
        else:
            raise StopIteration

fibo = Fibonacci(10)
for i in fibo:
    print(i)