关于斐波那契数列介绍
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果
第一种方法:
def fibonacci(n):
a = 0
b = 1
for _ in range(n):
yield b
a, b = b, a + b
# 1) 打印前20个数:
for x in fibonacci(20):
print(x)
# 2) 打印前40个斐波那契数的和
print(sum(fibonacci(40)))
第二种方法:
num =int(input("请输入一个数字返回你一个斐波那契数列:"))
list_nums=[1,1]
def calculate(num,list_nums):
i = 0
if num>2:
while i < num:
list_nums.insert(i+2,list_nums[i]+list_nums[i+1])
i+=1
else:
print("数列已生成")
print(list_nums)
return list_nums[num-1]
else:
return list_nums[0]
res = calculate(num,list_nums)
print("="*50)
print("第%s个:%s"%(num,res))
第三种方法:
def memo(func):
cache = {}
def wrap(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrap
@ memo
def fib(i):
if i < 2:
return 1
return fib(i-1) + fib(i-2)
print(fib(5))
第四种方法:
fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
f = [fib(i) for i in range(1,7)]
print(f)