刚开始学Python的时候,记得经常遇到打印斐波那契数列了,今天玩玩使用四种办法打印出斐波那契数列

方法一:使用普通函数

 def feibo(n):
"""
打印斐波那契数列
:param n: 输入要打出多少项
"""
count = 0 # 定义一个计数器
num1, num2 = 0, 1 # 定义前2项 0,1
while count < n:
print(num1, end=" ")
num1, num2 = num2, num1 + num2
count += 1 feibo(10) 结果如下:

0 1 1 2 3 5 8 13 21 34
进程已结束,退出代码 0

方法二:使用递归输出斐波那契数列

 def recur_feibo(n):
"""递归函数输出斐波那契数列"""
if n <= 1:
return n
else:
return (recur_feibo(n - 1) + recur_feibo(n - 2)) # 获取用户输入
total_num = int(input("请输入要打印的项数:"))
if total_num < 0:
print("请输入大于0的整数!")
else:
for i in range(total_num):
print(recur_feibo(i),end=" ") 结果如下:
请输入要打印的项数:10
0 1 1 2 3 5 8 13 21 34
进程已结束,退出代码 0

方法三:自己造一个斐波那契数列迭代器

 class FeiBO(object):
"""斐波那契数列迭代器""" def __init__(self, n):
self.n = n
self.counter = 0 # 迭代器的指针初始默认指向 0 # 数列的前两项 0 ,1
self.num1 = 0
self.num2 = 1 def __iter__(self):
return self def __next__(self):
if self.counter < self.n:
temp = self.num1
self.num1, self.num2 = self.num2, self.num1 + self.num2
self.counter += 1
return temp
else:
raise StopIteration n = int(input("请输入要打印的项数:")) # 创建迭代器
feibo = FeiBO(n) # 使用for 迭代
fib1 = FeiBO(n)
for item in feibo:
print(item, end=" ") 结果如下:
请输入要打印的项数:10
0 1 1 2 3 5 8 13 21 34
进程已结束,退出代码 0

方法四:使用yield实现生成器求斐波那契数列

 def feibo(n):
"""使用yield实现生成器求斐波那契数列"""
count = 0 # 记录当前迭代的位置,初始值为0
num1, num2 = 0, 1 # 初始化数列的前两位值 0,1
while count < n:
yield num1
num1, num2 = num2, num1 + num2
count += 1 # 自加一,迭代器指针指向下一个位置 n = int(input("请输入要打印的项数:")) # 创建生成器,生成器默认是沉睡的,假如是第一次唤醒生成器(函数),则从生成器(函数)的起始位置开始运行
gen = feibo(n) # 使用for 迭代
for item in gen:
print(item, end=" ") 结果如下:
请输入要打印的项数:10
0 1 1 2 3 5 8 13 21 34
进程已结束,退出代码 0

如果你和我有共同爱好,我们可以加个好友一起交流!

{每日一题}:四种方法实现打印feibo斐波那契数列的更多相关文章

  1. 方法输出C++输出斐波那契数列的几种方法

    PS:今天上午,非常郁闷,有很多简单基础的问题搞得我有些迷茫,哎,代码几天不写就忘.目前又不当COO,还是得用心记代码哦! 定义: 斐波那契数列指的是这样一个数列:0, 1, 1, 2, 3, 5, ...

  2. Javascript数组求和的方法总结 以及由斐波那契数列得到的启发

    一次面试中,面试官要求用三种不同的Javascript方法进行一个数字数组的求和,当时思来想去只想到了使用循环这一种笨方法,因此面试比较失败,在这里总结了六种Javascript进行数组求和的方法,以 ...

  3. Python初学者笔记:打印出斐波那契数列的前10项

    问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列.费波那西数列.费波拿契数.费氏数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.- ...

  4. 斐波那契数列的5种python实现写法

    斐波那契数列的5种python写法       斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖 ...

  5. 使用并行的方法计算斐波那契数列 (Fibonacci)

    更新:我的同事Terry告诉我有一种矩阵运算的方式计算斐波那契数列,更适于并行.他还提供了利用TBB的parallel_reduce模板计算斐波那契数列的代码(在TBB示例代码的基础上修改得来,比原始 ...

  6. JS高级. 06 缓存、分析解决递归斐波那契数列、jQuery缓存、沙箱、函数的四种调用方式、call和apply修改函数调用方法

    缓存 cache 作用就是将一些常用的数据存储起来 提升性能 cdn //-----------------分析解决递归斐波那契数列<script> //定义一个缓存数组,存储已经计算出来 ...

  7. 斐波那契数列-java编程:三种方法实现斐波那契数列

    题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...

  8. 实现斐波拉契数列的四种方式python代码

    斐波那契数列 1. 斐波拉契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引 ...

  9. Python中斐波那契数列的四种写法

    在这些时候,我可以附和着笑,项目经理是决不责备的.而且项目经理见了孔乙己,也每每这样问他,引人发笑.孔乙己自己知道不能和他们谈天,便只好向新人说话.有一回对我说道,“你学过数据结构吗?”我略略点一点头 ...

随机推荐

  1. mysql简易导入excel

    方法-:利用excel本身的命令实现: 1 将excel文件中的数据转换成sql文件 (1)如图所示,我们在excel中执行如下语句 =CONCATENATE(“insert into table_n ...

  2. PTA A1005&A1006

    第三天 A1005 Spell It Right (20 分) 题目内容 Given a non-negative integer N, your task is to compute the sum ...

  3. 44 (OC)* 野指针、空指针

    一: 空指针 : 没有存储任何内存地址的指针就称为空指针(NULL指针). 被赋值为nil的指针,在没有被具体初始化之前,为nil.nil.Nil.NULL.NSNULL的含义和区别 nil:OC中的 ...

  4. 章节十六、10-TestNG报告和日志

    一.在进行自动化的过程中,日志一般采用log4j 2进行日志记录,但TestNG自己本身也带有日志记录功能(reporter),它的好处在于日志中记录的内容都是testng自动生成的. package ...

  5. 大白话讲解 BitSet

    原理 BitSet是位操作的对象,值只有0或1即false和true,内部维护了一个long数组,初始只有一个long,所以BitSet最小的size是64,当随着存储的元素越来越多,BitSet内部 ...

  6. 浅谈 Vector

    目录 浅谈Vector 1.容器基本操作 2.vector 初始化 3.vector的赋值与swap 4.vector的增删改除 1.增加元素 2.访问元素 3.删除元素 4.元素的大小 浅谈Vect ...

  7. python高级—— 从趟过的坑中聊聊爬虫、反爬以及、反反爬,附送一套高级爬虫试题

    前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...

  8. Redis数据库安装与配置调试

    主要培养自我对Redis数据库安装能力, 并且进行个性化的数据库配置.掌握本实验的重点,即在于数据库的安装与启动参数的配置.同时,理解NOSQL数据库的体系结构. ①下载Redis安装包进行数据库平台 ...

  9. 利用Python进行数据分析:【NumPy】

    一.NumPy:数组计算1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: # ndarray,一个多维数组结构,高效且节省空间 # 无 ...

  10. shiro使用注解(@RequiresPermissions等)不无效及异常处理

    1.注解不生效 在shiro配置类中加上如下代码: /** * Shiro生命周期处理器 */ @Bean(name = "lifecycleBeanPostProcessor") ...