67.斐波那切数列的三种实现方法(递归函数、列表负数索引和自定义迭代类)

1.递归函数实现法

def fibo(n):
    if n==0:
        return 0
    elif n==1:
        return 1
    else:
        return fibo(n-1)+fibo(n-2)

2.列表负数索引法

def fibo2(n):
    f=[0,1]
    for i in range(n):
        f.append(f[-2]+f[-1])
    return f[n]

#输入数值
print(fibo(10))
print(fibo2(10))

输出结果:

3.自定义迭代类法

class Fibonacci:
    def __init__(self):
        self.a=0
        self.b=1
    def __next__(self):
        result=self.a
        #这种序列赋值中"self.a+self.b"中的self.a依然是原来的值,而不是新赋的值
        #因此,这个赋值
        #self.a=self.b
        #self.b=self.a+self.b
        #是不等值的。要注意这个问题。
        self.a,self.b=self.b,self.a+self.b
        return result
    def __iter__(self):
        return self

fibs=Fibonacci()
#fibs就是调用next函数,fib就是next的返回值
for fib in fibs:
    print(fib,end=' ')
    if fib>200:
        break

输出结果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章