python利⽤列表计算斐波那契数列前30项_⽤Python列表计算
Fibonacci序列。。。
问题:
有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…
python 定义数组
求出这个数列的前20项之和
这道题是典型的斐波那契数列。斐波那契数列(Fibonacci sequence),⼜称黄⾦分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔⼦繁殖为例⼦⽽引⼊,故⼜称为“兔⼦数列”,指的是这样⼀个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的⽅法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应⽤,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的⼀份数学杂志,⽤于专门刊载这⽅⾯的研究成果。
我们可以使⽤列表来作为存储数列的数据结构,每增加⼀个数列项,就在数列的后⾯使⽤append增加⼀项。然后⽤最后⼀项除以倒数第⼆项获得⽐值。
对于求和,⼟⽅法是设计⼀个变量,每⽣成⼀个新的⽐例值,就把这个值累加到求和的变量上。还有⼀种⾼级的⽅法是使⽤numpy中的函数sum⽅法,把列表转换成ndarray数组之后再进⾏计算,这样的程序⽐较清晰简洁。
具体的代码如下:
import numpy as np
fibolength = 20
fiboracci = [1,2]
fiboratio = [2/1]
fibosum = fiboratio[0]
for i in range(1,fibolength,1):
fiboracci.append(fiboracci[i]+fiboracci[i-1])
fiboratio.append(fiboracci[i+1]/fiboracci[i])
fibosum = fibosum + fiboratio[i]
print("斐波那契数列(前21位)如下:")
print(fiboracci)
print('斐波那契⽐(前20位)如下:')
print(fiboratio)
print('斐波那契⽐(前20位)之和如下:')
print(fibosum)
fiboarray = np.array(fiboratio)
print('斐波那契⽐(前20位)如下:')
shape(5,4))
print('斐波那契⽐(前20位)之和如下:')
fibosigma = np.sum(fiboratio)
print(fibosigma)
运⾏结果如下:
斐波那契数列(前21位)如下:
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711]
斐波那契⽐(前20位)如下:
[2.0, 1.5, 1.6666666666666667, 1.6, 1.625, 1.6153846153846154, 1.619047619047619, 1.6176470588235294, 1.6181818181818182, 1.6179775280898876, 1.6180555555555556, 1.6180257510729614,
1.6180371352785146, 1.618032786885246, 1.618034447821682, 1.6180338134001253, 1.618034055727554, 1.6180339631667064, 1.6180339985218033, 1.618033985017358]
斐波那契⽐(前20位)之和如下:
32.66026079864164
斐波那契⽐(前20位)如下:
[[2. 1.5 1.66666667 1.6 ]
[1.625 1.61538462 1.61904762 1.61764706]
[1.61818182 1.61797753 1.61805556 1.61802575]
[1.61803714 1.61803279 1.61803445 1.61803381]
[1.61803406 1.61803396 1.618034 1.61803399]]
斐波那契⽐(前20位)之和如下:
32.660260798641644
[Finished in 1.6s]

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。