用递归实现斐波那契数列 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 decoding=“>


直接或间接调用 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)

 

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



 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • callee caller作用_call up和call的区别

    callee caller作用_call up和call的区别caller和callee的区别

    2025年6月30日
    0
  • 集群高并发情况下如何保证分布式唯一全局ID生成

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:轻狂书生 blog.csdn.net/LookForDream_/article/details/109355…

    2021年6月27日
    102
  • PCA:详细解释主成分分析「建议收藏」

    PCA:详细解释主成分分析「建议收藏」1PCA目的/作用主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。PCA降维的目的,就是为了在尽量保证“信息量不丢失”的情况下,对原始特征进行降维,也就是尽可能将原始特征往具有最大投影信息量的维度上进行投影。将原特征投影到…

    2022年5月17日
    39
  • webpackdevtool配置简单对比简书_钢铁雄心4toolpack

    webpackdevtool配置简单对比简书_钢铁雄心4toolpack官方手册传送门官方对devtool配置的定义很简单:选择一种sourcemap格式来增强调试过程,不同的值会明显影响到构建build和重新构建rebuild的速度。不过,什么是sourcemap,官方用提供了许多种的sourcemap,其中的区别是什么,我们在开发中应该怎么选择,都是我们要学习的。1.什么是sourcemap现在的前端代码会通过babel编译或者各类的…

    2022年9月29日
    0
  • 计算机xp考试模块,职称计算机考试XP模块题库

    计算机xp考试模块,职称计算机考试XP模块题库一、WindowsXP的特点、启动和退出1、要求:将你的计算机转入待机状态:开始→关闭计算机→待机2、要求:重新启动你的计算机:开始→关闭计算机→重新启动3、要求:正常退出WindowsXP系统:开始→关闭计算机→关闭4、要求:切换当前用户为DCH:开始→注销→切换用户→点“DCH已登录”5、要求:对当前用户进行注销:开始→注销→注销二、Windows的界面(一)1、要求:利用“索引”查找关于…

    2022年6月2日
    33
  • 模拟量差分和单端(iou计算方法)

    一.计算IOU人工修正后的每一个框与算法输出的所有框去计算IOU,取出IOU大于0.9的算法输出框defcompute_IOU(algrim_bboxs,fix_bboxs):#print(‘algrim_bboxs:’,algrim_bboxs)#print(‘fix_bboxs:’,fix_bboxs)fori,fix_bboxinen…

    2022年4月15日
    48

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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