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
輸出結果: