用递归实现斐波那契数列 python_python斐波那契数列前30项

用递归实现斐波那契数列 python_python斐波那契数列前30项文章目录一,递归方法: 二,斐波那契数列简介: 特性一: 特性二: 两种方法运行时间对比: /一,递归方法:/递归方法为:将问题一步步分解,直到得到可以解决的简单问题。通常涉及直接或间接条用自身:例如计算列表(1,3,5,7,9,13)中各元素的和。直接或间接调用sum()函数自身:python实现如下:In[1]deflistsum(a):iflen(a)==1:r…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

文章目录

   

   

   

   


/ 一,递归方法: /




递归方法为:将问题一步步分解,直到得到可以解决的简单问题。

通常涉及直接或间接条用自身:

例如计算列表(1,3,5,7,9,13)中各元素的和。


<img class=“>


直接或间接调用 sum()函数自身:

python 实现如下:

In[1]

def listsum(a):
   if len(a) == 1:
        return a[0] #如果列表中只有一位元素,则返回a[0]
   else:
        return a[0] + listsum(a[1:]) #返回第一位元素于剩余其他元素的和
print(listsum([1,3,5,7,9,13]))

 

Out[2]:

38

`

 




/ 二,斐波那契数列简介: /


斐波那契数列是最常见的一道面试题,又称‘兔子数列/黄金分割数列’。



1

 

   

特性一:


任一个数都是前两个数之和。

例如:

\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qmKwUnXM-1589970515420)(C:\Users\weinou314\Desktop\工作台\斐波那契\images.gif)\]

因此第一种计算斐波那契数列的方法,即让数字序列的最后两个元素相加,得到新的数字并插入数列结尾。

斐波那契矩陣式解法:

用递归实现斐波那契数列 python_python斐波那契数列前30项



2

 

   

 

 

特性二:


在极限条件下,相邻两个元素的商等于一个常数。即


\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PJqPtOG-1589970515422)(C:\Users\weinou314\Desktop\工作台\斐波那契\斐波那契 phi-1.gif)\]



3

 

   

 

 

第一种:


我们可以通过设置一个数组。

a = [0,1]

下一个要插入的数据就为“a【-1】+a【-2】”。

 

a.append(a[-1] + a[-2])

 

继续循环。循环 y 次就得到了 y 个新数字。

最后所得到的斐波那契数列中数字的个数为 n = y + 2 。

可以根据用户想要的斐波那契数字的个数 n 来定义循环次数 y。

y = n – 2

输入【1】:

def fibs1(n): #定义斐波那契函数
    a = [0] #声明a为数组
    if n <= 0:
        print('错误') #n 不能 <= 0
    else:
       
        if n > 1: 
            a = [0,1]
            for i in range(n - 2): #执行n-2次循环,即向数组a中新增n-2个斐波那契数字
                a.append(a[-2] + a[-1]) #新增数字 = 最后两个数字的和
    return a

输入【2】:

fibs1(10)

输出【2】:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

 



 

 

 

第二种:


提前定义好数组中元素的个数,再依次设定每个值为前两个数的和。

输入【1】:

def fibs2(n): #n为需要的斐波那契数字个数
    f = [0] * n #定义包含n个0的数组
    if n <= 0:
        print('错误') #n 不能 <= 0
    else:
       if n >= 2:
            f[1] =1 #此时f = [0 , 1]
            for i in range(2,n): 
                f[i] = f[i - 1] +f[i-2]
            '''
            f[2] = f[1] + f[0] = 1,此时f = [0,1,1];三个斐波那契数字
            f[3] = f[2] + f[1] = 2,此时f = [0,1,1,2];四个斐波那契数字
             ......
            f[n-1] = f[n-2] + f[n-1];n 个斐波那契数字
            '''
    return f

输入【2】:

fibs2(10)

输出【2】:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

 



4

 

   

 

两种方法运行时间对比:


输入【1】:

%timeit fibs1(100)
%timeit fibs2(100)

输出【1】:
26.2 µs ± 736 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
30.7 µs ± 301 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

 

将复杂的计算过程封装为一个函数存储起来,就可以避免写重复的代码。再次需要该计算的时候只需调用即可。



 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197870.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何解决高并发,秒杀问题[通俗易懂]

    如何解决高并发,秒杀问题[通俗易懂]相信不少人会被这个问题困扰,分享大家一篇这样的文章,希望能够帮到你!一、秒杀业务为什么难做?1)im系统,例如qq或者微博,每个人都读自己的数据(好友列表、群列表、个人信息);2)微博系统,每个人读你关注的人的数据,一个人读多个人的数据;3)秒杀系统,库存只有一份,所有人会在集中的时间读和写这些数据,多个人读一个数据。例如:小米手机每周二的秒杀,可能手机只有1万部,但瞬时进入的流量可能是几百几千万…

  • Python之json文件

    json简介json是一种轻量级的数据交换格式完全独立于编程语言的文本格式来存储和表示数据简单和清晰的层次结构使得json成为理想的数据交换语言。易于阅读和编写,易于机器解析和生成,并有效地提升

    2021年12月19日
  • maven-porm.xml详解

    maven-porm.xml详解什么是POM?POM是项目对象模型(ProjectObjectModel)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。作用类似ant的build.xml文件,功能更强大。该文件用于管理:源代码、配置文件、开发者的信息和角色、问题追踪系统、组织信息、项目授权…

  • smartctl命令详解_fuser命令

    smartctl命令详解_fuser命令smart用法1.smartctl-son/dev/sda”开启磁盘的smart功能2.smartctl-a/dev/sda”显示磁盘的详细smart信息3.smartctl–test=short/dev/sda4.smartctl–test=short/dev/sdb检查磁盘坏道…

  • 高并发情况下你还在用Random生成随机数?

    高并发情况下你还在用Random生成随机数?不是吧,阿sir

  • hive中操作hdfs命令

    hive中操作hdfs命令版本:Hadoop2.7.4–查看dfs帮助信息[root@hadp-mastersbin]#dfsUsage:dfs[genericoptions][-appendToFile…][-cat[-ignoreCrc]…][-checksum…][-chgrp[-R]GROUPPATH…][-chmod[-R]<MODE[,MODE]…|OCTALMODE>PATH…][-chown[-R][OWNER][:[GROUP]]PA

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号