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
输出结果: