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

輸出結果:

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