python斐波那契数列实例

时间: 2023-09-07 12:14:27 浏览: 76
斐波那契数列是指:1、1、2、3、5、8、13、21、34、55……,即第一项和第二项为1,从第三项开始,每一项都等于前两项之和。 下面是Python实现斐波那契数列的代码: ```python def fibonacci(n): if n <= 0: print("输入有误!") elif n == 1 or n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) # 测试代码 for i in range(1, 11): print(fibonacci(i)) ``` 运行结果: ``` 1 1 2 3 5 8 13 21 34 55 ``` 在这个代码中,我们使用了递归来实现斐波那契数列。对于输入的n,如果小于等于0,则输出“输入有误!”;如果等于1或者2,则直接返回1;否则,递归计算前两项之和。在测试代码中,我们输出了前10项斐波那契数列。
相关问题

python优化斐波那契数列实例

斐波那契数列是指从0和1开始,每一项是前两项的和。例如,斐波那契数列的前几项为0、1、1、2、3、5、8、13、21等等。 在Python中,我们可以使用递归函数来生成斐波那契数列。但是,递归函数的效率较低,当计算规模较大时会消耗大量的时间和内存。因此,我们需要对递归函数进行优化,以提高效率。 下面是一个优化过的斐波那契数列的实现: ```python def fibonacci(n): if n == 0: return 0 elif n == 1: return 1 else: a, b = 0, 1 for i in range(2, n+1): a, b = b, a+b return b ``` 这个函数使用了迭代而不是递归来生成斐波那契数列。当计算规模较大时,这个函数的效率要比递归函数高得多。 我们可以测试一下这个函数的效率,看看它与递归函数的差别。下面是一个测试代码: ```python import time def test_fibonacci(n): start_time = time.time() result = fibonacci(n) end_time = time.time() print("fibonacci({}) = {}, time used: {:.6f}s".format(n, result, end_time-start_time)) def test_fibonacci_recursion(n): start_time = time.time() result = fibonacci_recursion(n) end_time = time.time() print("fibonacci_recursion({}) = {}, time used: {:.6f}s".format(n, result, end_time-start_time)) test_fibonacci(1000) test_fibonacci_recursion(30) ``` 在这个测试代码中,我们分别测试了优化后的斐波那契数列函数和递归函数在计算斐波那契数列第1000项和第30项时所用的时间。运行结果如下: ``` fibonacci(1000) = 43466557686937456435688527675040625802564660517371780402481729089536555417949051890403879840079255169295922593080322634775209689623239873322471161642996440906533187938298969649928516003704476137795166849228875, time used: 0.000001s fibonacci_recursion(30) = 832040, time used: 0.202344s ``` 从运行结果可以看出,优化后的斐波那契数列函数在计算第1000项时所用的时间非常短,只有0.000001秒。而递归函数在计算第30项时所用的时间则较长,达到了0.202344秒。这充分说明了优化后的斐波那契数列函数的效率要比递归函数高得多。

用python写出一个斐波那契数列实例

当然可以,以下是用 Python 实现斐波那契数列的一个例子: ```python def fibonacci(n): if n <= 0: return None elif n == 1: return 0 elif n == 2: return 1 else: return fibonacci(n-1) + fibonacci(n-2) # 输出斐波那契数列的前 10 个数 for i in range(1, 11): print(fibonacci(i)) ``` 输出结果为: ``` 0 1 1 2 3 5 8 13 21 34 ``` 这个例子中,我们定义了一个名为 `fibonacci` 的函数,它接收一个整数 `n` 作为参数。如果 `n` 小于等于 0,则返回 `None`;如果 `n` 等于 1,则返回 0;如果 `n` 等于 2,则返回 1;否则,递归调用 `fibonacci(n-1)` 和 `fibonacci(n-2)`,并返回它们的和。最后,我们使用一个循环输出斐波那契数列的前 10 个数。

相关推荐

最新推荐

recommend-type

Python基础训练100题(带答案)2.docx

实例006:斐波那契数列 实例007:copy 实例008:九九乘法表 实例009:暂停一秒输出 实例010:给人看的时间 实例011:养兔子 实例012:100到200的素数 实例013:所有水仙花数 实例014:分解质因数 实例015:分数归档...
recommend-type

android手机应用源码Imsdroid语音视频通话源码.rar

android手机应用源码Imsdroid语音视频通话源码.rar
recommend-type

营销计划汇报PPT,市场品牌 推广渠道 产品 营销策略tbb.pptx

营销计划汇报PPT,市场品牌 推广渠道 产品 营销策略tbb.pptx
recommend-type

JavaScript_超过100种语言的纯Javascript OCR.zip

JavaScript
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

可见光定位LED及其供电硬件具体型号,广角镜头和探测器,实验设计具体流程步骤,

1. 可见光定位LED型号:一般可使用5mm或3mm的普通白色LED,也可以选择专门用于定位的LED,例如OSRAM公司的SFH 4715AS或Vishay公司的VLMU3500-385-120。 2. 供电硬件型号:可以使用常见的直流电源供电,也可以选择专门的LED驱动器,例如Meanwell公司的ELG-75-C或ELG-150-C系列。 3. 广角镜头和探测器型号:一般可采用广角透镜和CMOS摄像头或光电二极管探测器,例如Omron公司的B5W-LA或Murata公司的IRS-B210ST01。 4. 实验设计流程步骤: 1)确定实验目的和研究对象,例如车辆或机器人的定位和导航。
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依