斐波那契数列的三种python实现方式-普通版、递归版、迭代器版

斐波那契数列

斐波那契数列(Fibonacci sequence)的定义:斐波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368…,这个数列从第3项开始,每一项都等于前两项之和。
在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)。
方法一:普通版

def create_num(all_num):
    a, b = 0, 1
    current_num = 0
    while current_num <all_num:
        print(a)
        a, b = b, a+b
        current_num += 1

create_num(10)

方法二:递归函数

def feibo(n):
	if n == 1:
		return 0
	if n == 2:
		return 1
	return feibo(n-1) + feibo(n-2)

for i in range(10):
	print(feibo(i+1))

方法三:迭代器

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

    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 num in fibo:
    print(num)

结果:

0
1
1
2
3
5
8
13
21
34

猜你喜欢

转载自blog.csdn.net/weixin_44850984/article/details/89250054