python语言实现斐波那契数列
来源:互联网 发布:淘宝网韩版式斗篷女装 编辑:程序博客网 时间:2024/06/05 11:34
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)
今天做了一个题目关于斐波那契数列的问题
然后分别用递归方法与迭代方法实现功能:
方法一:
方法一
a=[1,2]for i in range(2,50): a.append(a[i-1]+a[i-2])#根据斐波纳契数规律 #print(a[i-1]/a[i-2])#查看相邻两数比例是否接近黄金分割比 #print(a)#40000生成杨辉三角左对齐 if(a[i]>40000): a.pop()#因为a[i]比预期多出来一项,所以要移除最后一项 breakprint(a)#四万以下的斐波纳契数#print((sum(a)+1)//2)#斐波纳契数列中偶数之和##[1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 286`实现一:这样一个完全是自然数的数列,通项公式却是用无理数来表达的。而且当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618(或者说后一项与前一项的比值小数部分越来越逼近0.618)`2.01.51.66666666666666671.61.6251.61538461538461541.6190476190476191.61764705882352941.61818181818181821.61797752808988761.61805555555555561.61802575107296141.61803713527851461.6180327868852461.6180344478216821.61803381340012531.6180340557275541.61803396316670641.61803399852180331.6180339850173581.6180339901755971
实现二:杨辉三角
[0, 1, 1][0, 1, 1, 2][0, 1, 1, 2, 3][0, 1, 1, 2, 3, 5][0, 1, 1, 2, 3, 5, 8][0, 1, 1, 2, 3, 5, 8, 13][0, 1, 1, 2, 3, 5, 8, 13, 21][0, 1, 1, 2, 3, 5, 8, 13, 21, 34][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987][0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]
实现三:斐波那契数列元素中偶数之和
发现该数列中偶数相加,
2+8+34+144…….=2+3+5+34+55…….
受启发得:
偶数和s1,总和s
s1+s1+1=s+2
所以:
s1=(s+1)/2
print((sum(a)+1)//2)#斐波纳契数列中偶数之和
#方法二:def fun(n): if n==0: return 0 if n==1: return 1 return fun(n-1)+fun(n-2)a=[None]*50for i in range(1,50): if fun(i)<40000: a[i]=fun(i) else: breakprint(a)
方法三:
#方法三def fibo(n): x, y = 0, 1 while(n): x,y,n = y, x+y, n - 1 return xa=[0]*50for i in range(1,50): if fibo(i)<40000: a[i]=fibo(i) else: breakprint(a)
0 0
- python语言实现斐波那契数列
- python实现斐波那契数列
- 斐波那契数列 python实现
- Python 实现斐波那契数列 (黄金分割数列)
- 【Python】Python使用generator实现斐波那契数列
- go语言斐波那契数列实现
- 用 C 语言实现 斐波那契数列
- C语言斐波那契数列的多种实现
- C语言递归方法实现斐波那契数列
- 斐波那契数列算法c语言实现
- 斐波那契数列C语言实现
- 斐波那契数列-C语言实现
- python超简单实现斐波那契数列
- 用Python简单实现斐波那契数列
- 斐波那契数列[剑指offer]之python实现
- Python实现一个简易的斐波那契数列
- python递归式的实现斐波那契数列
- python 斐波那契数列缓存方式实现
- 回溯-全排列问题
- java 匿名内部类
- 用浏览器测试Get与Post Webservice,Post一直报405错误,而Get能够成功的原因与解决方法
- BZOJ 3589 动态树
- 复习面试题2
- python语言实现斐波那契数列
- Java Web基础——Action+Service +Dao三层的功能划分
- Android Studio快捷键、配置 Android Studio、cmake配置Android原生项目、cmake命令
- WebService基础课程之使用CXF发布javase服务
- Java map 详解
- 配置ROS工作环境以及简单介绍文件系统(二)
- CSU-1531 Jewelry Exhibition —— 二分图匹配(最小覆盖点)
- 2017年java面试问题汇集
- Java解惑学习有感(三)---循环之谜