蓝桥杯python组--基础训练---求输入的第n个,斐波那契数
文章目录
- 题目
- 思路1:
- 结果
- 思路2:
- 结果
- 思路3
- 结果
- 思路4
- 结果
- 思路5
- 结果
- 思路6
- 结果
题目
求输入的第n个,斐波那契数
斐波那契数:斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo 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*)
思路1:
递归
当n=1或n=2时,F=1。即F(0)=0,F(1)=1,F(2)=1;n>=2时,F(n)=F(n - 1)+F(n - 2),n ∈ N*
def fab(n):if n == 1 or n == 2:return 1return fab(n-1) + fab(n-2)print(fab(6)) # n可取任意整数
结果
思路2:
for循环
先令第0个和第1个数为1
再进入for循环后,从第二个数开始。
# 求输入的第n个,斐波那契数
n = int(input('请输入要一个整数:'))
n_2 = 0
n_1 = 1
reslut = 1
for x in range(2, n+1):reslut = n_2 + n_1n_2 = n_1n_1 = reslut
print('第%d个数是%d'%(n, reslut))
结果
思路3
动态编程
def dynamic_fibonacci(n):'''This function will calculate fobonacciseries with the help of dynamicprogramming.'''l = [0]*(n+1)l[0] = 0l[1] = 1for i in range(2, n+1):l[i] = l[i-1] + l[i-2]return l
def main():n =10lst = dynamic_fibonacci(n)print('By Dynamic Programming:',lst[n])
main()
结果
思路4
公式法
在这种方法中,我们借助公式计算斐波纳契数列的第n个项。
Formula:
phi = ( 1 + sqrt(5) ) / 2
An = phin/ sqrt(5)
def fibonacci_by_formula(n):'''This function will calculate n-thterm of fibonacci series with thehelp of a formula.'''from math import sqrtphi = (1 + sqrt(5))/2fib = round(pow(phi, n)/sqrt(5))return fib# Time complexity O(1)def main():n = 1x = fibonacci_by_formula(n)print('By Formula:',x)main()
结果
思路5
生成器法
# 求斐波那契数列中第n个数的值
# 生成器法
def fib(n):a, b = 0, 1for _ in range(n):a, b = b, a + byield afor val in fib(100):print(val)
结果
生成100个结果。
由于界面有限,只截图部分结果。
思路6
集合法
1、定义空的列表和sum
2、判断是否为第一项或第二项,如果是,则直接在列表中添加1(因为前两项的值都为1)
3、从第三项开始,则要用我们的算法开始计算(本项=前2项+前一项),前两项比较特殊,直接制定前两项
4、遍历集合,将集合中的每一个元素值都加到Sum中
5、打印输出
""
求斐波那契数列第n项以及前n项和
斐波那契数列:从第二项开始,每一项都等于前两项之和
1,1,2,3,5,8,13,21,34,55,89,144,...
""n = int(input("请输入要求第几项:"))
list1 = []
Sum = 0 # 定义初始和为0
num = 0
if n == 1 or n == 2:for a in range(0, n):list1.append(1)else:list1 = [1, 1] # 前两项比较特殊,直接指定for a in range(0, n - 2): # 从第三项开始,前两项已经排除list1.append(list1[a] + list1[a + 1]) # 将前1项与前2项的和添加到列表中for a in list1: # 将list1中的元素相加Sum = Sum + aprint("第%d项为:%d,前%d项之和为:%d" % (n, list1[n - 1], n, Sum))
print(list1)
结果
蓝桥杯python组--基础训练---求输入的第n个,斐波那契数相关推荐
- fibonacci斐波那契数列详解 递归求Fn非递归求Fn求n最近的斐波那契数
斐波那契fibonacci 斐波那契额数列即前两项F(0)和F(1)都是1,之后的每一项都是前两项相加和即F(3)=2,F(4)=3,F(5)=5; 通项公式:F(n+2)=F(n+1)+F(n). ...
- 蓝桥杯python组一个星期备战记录贴
蓝桥杯python组一个星期备赛记录贴 文章目录 前言 注意事项: 一.贪心算法 二.最小生成树之Prim算法 三.动态规划 四.递归算法 五.树与堆 前言 目前是2021年4月11日,一位pytho ...
- 青少年蓝桥杯python组(STEMA中级组)
STEMA中级-青少年蓝桥杯python组 第一套编程题 第一题 第二题 第三题 第四题 第五题 第二套编程题 第一题 第二题 第三题 第四题 第五题 第一套编程题 第一题 [编程实现] 输入一个字符 ...
- 2021第十二届蓝桥杯Python组国赛/决赛 题解
2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...
- 【蓝桥杯Python组】既约分数
[蓝桥杯Python组]既约分数 [问题描述] 如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数. 例如,34 , 52 , 18 , 71 都是既约分数. 请问,有多少个既约分数,分 ...
- 青少年蓝桥杯python组(STEMA初级组)
STEMA初级-青少年蓝桥杯python组 第一套编程题 第一题 第二题 第三题 第四题 第二套编程题 第一题 第二题 第三题 第四题 第一套编程题 第一题 [编程实现] 分别输入两个正整数 M.N, ...
- 蓝桥杯python组——猜生日
蓝桥杯python组--猜生日 import os import sys import datetime start=datetime.date(1912,3,12) end=datetime.dat ...
- 蓝桥杯python组——平行四边形面积
蓝桥杯python组--平行四边形面积 import os import sys l=int(input()) h=int(input()) print(l*h) 谢谢大家的支持,您的一键三连是 罡罡 ...
- 蓝桥杯python组——四平方和
蓝桥杯python组--四平方和 import os import sys import math n=int(input()) sqn=int(math.sqrt(n))def f(n):for a ...
最新文章
- 各类攻击 单一协议 pcap数据包 下载网站
- 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
- P1288 取数游戏II
- qt插件元数据不包含一个有效的元数据_Qt5个人软件插件使用(低级API)
- MySQL高级 全表扫描更快
- 并发数据结构 : SpinWait
- ICCV 2019 | 基于轻量级新架构OSNet的域适应改进ReID
- SAP License:自动创建带内部订单预算管控的在建工程
- css怎么写链接到图片和地址
- java服务端验证框架_SpringBoot服务端数据校验过程详解
- Hyperledger fabric 区块结构、交易结构
- 《Puppet权威指南》——第1章 运维工程师的利器——自动化运维工具
- node js 生成视频链接(视频流)
- C#方法讲解——飞行棋画地图
- linux nslcd服务,redhat – sssd vs nslcd for RHEL-5/6
- 深度学习入门 (九):卷积层和池化层的实现
- Java 旋转、翻转图片工具类(附代码) | Java工具类
- Photoshop脚本开发环境
- Google OAUTH + OpenID 给第三方授权
- 晕菜...又要出差了...
热门文章
- 重定向次数过多怎么解决(www.bing.com 重定向次数过多)
- 网站运营推广:网站取名与做好定位很关健
- ReactNative中使用WebSocket
- 什么是java中的栈和堆_java中的堆和栈是什么?堆和栈有什么区别?
- 小米Android N新功能,雷军:小米将率先支持Android N新VR功能
- python实现ID3决策树及随机森林
- 机器视觉在电子半导体行业的应用 ——倒装焊技术不可或缺的“锐眼”
- 什么是Mobsync.exe,为什么运行?
- mysql cc攻击_CC攻击原理
- mysql主从脚本--从