文章目录

  • 题目
  • 思路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个,斐波那契数相关推荐

  1. 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). ...

  2. 蓝桥杯python组一个星期备战记录贴

    蓝桥杯python组一个星期备赛记录贴 文章目录 前言 注意事项: 一.贪心算法 二.最小生成树之Prim算法 三.动态规划 四.递归算法 五.树与堆 前言 目前是2021年4月11日,一位pytho ...

  3. 青少年蓝桥杯python组(STEMA中级组)

    STEMA中级-青少年蓝桥杯python组 第一套编程题 第一题 第二题 第三题 第四题 第五题 第二套编程题 第一题 第二题 第三题 第四题 第五题 第一套编程题 第一题 [编程实现] 输入一个字符 ...

  4. 2021第十二届蓝桥杯Python组国赛/决赛 题解

    2021第十二届蓝桥杯Python组国赛/决赛 题解 前言 2021年第十二届蓝桥杯国赛/决赛,因为疫情原因没有像往年一样前往北京参赛,而是在自己学校的机房进行考试,形式上类似蓝桥杯省赛,但由于参加国 ...

  5. 【蓝桥杯Python组】既约分数

    [蓝桥杯Python组]既约分数 [问题描述] 如果一个分数的分子和分母的最大公约数是 1,这个分数称为既约分数. 例如,34 , 52 , 18 , 71 都是既约分数. 请问,有多少个既约分数,分 ...

  6. 青少年蓝桥杯python组(STEMA初级组)

    STEMA初级-青少年蓝桥杯python组 第一套编程题 第一题 第二题 第三题 第四题 第二套编程题 第一题 第二题 第三题 第四题 第一套编程题 第一题 [编程实现] 分别输入两个正整数 M.N, ...

  7. 蓝桥杯python组——猜生日

    蓝桥杯python组--猜生日 import os import sys import datetime start=datetime.date(1912,3,12) end=datetime.dat ...

  8. 蓝桥杯python组——平行四边形面积

    蓝桥杯python组--平行四边形面积 import os import sys l=int(input()) h=int(input()) print(l*h) 谢谢大家的支持,您的一键三连是 罡罡 ...

  9. 蓝桥杯python组——四平方和

    蓝桥杯python组--四平方和 import os import sys import math n=int(input()) sqn=int(math.sqrt(n))def f(n):for a ...

最新文章

  1. 各类攻击 单一协议 pcap数据包 下载网站
  2. 这款 IDE 插件再次升级,让「小程序云」的开发部署提速 8 倍
  3. P1288 取数游戏II
  4. qt插件元数据不包含一个有效的元数据_Qt5个人软件插件使用(低级API)
  5. MySQL高级 全表扫描更快
  6. 并发数据结构 : SpinWait
  7. ICCV 2019 | 基于轻量级新架构OSNet的域适应改进ReID
  8. SAP License:自动创建带内部订单预算管控的在建工程
  9. css怎么写链接到图片和地址
  10. java服务端验证框架_SpringBoot服务端数据校验过程详解
  11. Hyperledger fabric 区块结构、交易结构
  12. 《Puppet权威指南》——第1章 运维工程师的利器——自动化运维工具
  13. node js 生成视频链接(视频流)
  14. C#方法讲解——飞行棋画地图
  15. linux nslcd服务,redhat – sssd vs nslcd for RHEL-5/6
  16. 深度学习入门 (九):卷积层和池化层的实现
  17. Java 旋转、翻转图片工具类(附代码) | Java工具类
  18. Photoshop脚本开发环境
  19. Google OAUTH + OpenID 给第三方授权
  20. 晕菜...又要出差了...

热门文章

  1. 重定向次数过多怎么解决(www.bing.com 重定向次数过多)
  2. 网站运营推广:网站取名与做好定位很关健
  3. ReactNative中使用WebSocket
  4. 什么是java中的栈和堆_java中的堆和栈是什么?堆和栈有什么区别?
  5. 小米Android N新功能,雷军:小米将率先支持Android N新VR功能
  6. python实现ID3决策树及随机森林
  7. 机器视觉在电子半导体行业的应用 ——倒装焊技术不可或缺的“锐眼”
  8. 什么是Mobsync.exe,为什么运行?
  9. mysql cc攻击_CC攻击原理
  10. mysql主从脚本--从