用Python实现求Fibonacci数列的第n项
1. 背景——Fabonacci数列的介绍(摘自百度百科):
斐波那契数列(Fibonacci sequence),又称黄金分割数列。因数学家列昂纳多·斐波那契(Leonardoda Fibonacci )以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……用公式定义如下:
计算通式为:
当n趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割0.618
2. 用Python迭代实现求解Fibonacci数列的第n项
def fib_iter(n):
n1 = 1
n2 = 1
n3 = 1 if (n < 1):
print("Wrong input! ")
return -1
else:
while (n-2) > 0:
n3 = n2 + n1
n1 = n2
n2 = n3
n -= 1 return n3 result = fib_iter(35)
if result != -1:
print(result)
优点:当n数值较大时,求解速度较递归法快
缺点:代码不简洁易懂
3. 用Python递归实现求解Fibonacci数列的第n项
def fib_re(n):
result = 0
if(n < 1):
print("Wrong input! ")
return -1
else:
if(n == 1 or n == 2):
return 1
else:
return fib_re(n-1) + fib_re(n-2) result = fib_re(35)
if result != -1:
print(result) #分治思想
优点:代码简洁易懂
缺点:当n数值较大时,反复的出栈和压栈操作使得运行时间很长
用Python实现求Fibonacci数列的第n项的更多相关文章
- 【编程题目】题目:定义 Fibonacci 数列 输入 n,用最快的方法求该数列的第 n 项。
第 19 题(数组.递归):题目:定义 Fibonacci 数列如下:/ 0 n=0f(n)= 1 n=1/ f(n-1)+f(n-2) n=2输入 n,用最快的方法求该数列的第 n 项. 思路:递归 ...
- 用PL0语言求Fibonacci数列前m个中偶数位的数
程序说明:求Fibonacci数列前m个中偶数位的数: 这是编译原理作业,本打算写 求Fibonacci数列前m个数:写了半天,不会写,就放弃了: 程序代码如下: var n1,n2,m,i; pro ...
- 程序员面试题精选100题(16)-O(logn)求Fibonacci数列[算法]
作者:何海涛 出处:http://zhedahht.blog.163.com/ 题目:定义Fibonacci数列如下: / 0 n=0 f(n)= ...
- 《面试题精选》15.O(logn)求Fibonacci数列
题目:定义Fibonacci数列例如以下: / 0 n=0 f(n)= 1 n=1 ...
- C++项目參考解答:求Fibonacci数列
[项目:求Fibonacci数列] Fibonacci数列在计算科学.经济学等领域中广泛使用,其特点是:第一.二个数是1,从第3个数開始,每一个数是其前两个数之和.据此,这个数列为:1 1 2 3 5 ...
- 递归函数练习:输出菲波拉契(Fibonacci)数列的前N项数据
/*====================================================================== 著名的菲波拉契(Fibonacci)数列,其第一项为0 ...
- 求Fibonacci数列通项公式
0. Intro \[f_n=\begin{cases} 0 & (n=0) \\ 1 & (n=1) \\ f_{n-1}+f_{n-2} & (n>1) \end{c ...
- 用Python输出一个Fibonacci数列
斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列” 用文字来说, ...
- POJ-3070Fibonacci(矩阵快速幂求Fibonacci数列) uva 10689 Yet another Number Sequence【矩阵快速幂】
典型的两道矩阵快速幂求斐波那契数列 POJ 那是 默认a=0,b=1 UVA 一般情况是 斐波那契f(n)=(n-1)次幂情况下的(ans.m[0][0] * b + ans.m[0][1] * a) ...
随机推荐
- 自己写的一些Excel及WordVBA函数[原创]
1.将Excel当前工作表另存至桌面 Excel中有时一个工作簿中工作表特别多,需要快速单独存取其中一个,可用以下代码快速存至桌面 Sub 另存工作表到桌面() Dim sh As Worksheet ...
- 2017-2018-1 20155230 《信息安全技术》实验二——Windows口令破解
2017-2018-1 20155230 <信息安全技术>一.Windows口令破解 1.字典破解 (1)为本机创建新用户.为了达到实验效果,用户口令不要设置得过于复杂,可以选择自己的生日 ...
- 封印解除:如何在Win10家庭版中启用组策略
@echo off pushd "%~dp0" *.mum >List.txt *.mum >>List.txt for /f %%i in ('findstr ...
- [2016北京集训测试赛3]masodik-[凸包]
Description Soluton 666这道题竟然用凸包... 维护r和c的下凸壳.哪个斜率大走哪个. 证明:我们先不考虑其他的,只考虑两条路,如下图: 设图的长度为x,宽度为y.如果我们要走上 ...
- 【转载】OGRE 2.1 Windows 编译
OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...
- day5 if while for
.注意点: ctrl + n 自动补全 18行报错,直接定位18行 逻辑运算符and or not 复合赋值运算符 += .if-elif 判断星期几 猜拳游戏 .while循环 )3大执行流程 )什 ...
- AWVS11提取规则文件
在这里给大家分享一个获取AWVS规则文件的思路. 目前我提取的是17年4月份的扫描规则. 后面如果规则更新,可以自行提取 官网: https://www.acunetix.com/vulne ...
- 一个经典的PHP加密解密算法authcode
项目中有时我们需要使用PHP将特定的信息进行加密,也就是通过加密算法生成一个加密字符串,这个加密后的字符串可以通过解密算法进行解密,便于程序对解密后的信息进行处理.最常见的应用在用户登录以及一些API ...
- 我们一起学习WCF 第十篇Wcf中实现事务
数据一致性在工作中显得非常重要,有时候我们库中出现脏数据导致程序报错,但是又很难发现这样的错误,所以为了数据的完整性建议在程序中加入事物. 什么是事物:我们都有团队合作吧,比喻团队有3个人,a负责设计 ...
- 微信 msg_sec_check接口PHP 调用
$checkContent = '要检测的内容'; $url = 'https://api.weixin.qq.com/wxa/msg_sec_check?access_token='. $res[& ...