Python多种方法生成菲波那切数列
文章目录
- 一、顺序输出
- 二、利用递归函数实现
- 三、循环
- 四、利用列表实现
- 五、利用reduce实现
- 六、利用生成器实现
- 七、利用魔术方法实现
记录多种方法生成菲波那切数列
一、顺序输出
代码如下:
# 第一种方法 顺序输出# 获取用户输入数据
num = int(input("你需要几项?"))# 第一和第二项
n1 = 1
n2 = 1
count = 2# 判断输入的值是否合法
if num <= 0:print("请输入一个正整数。")
elif num == 1:print("斐波那契数列:")print(n1)
else:print("斐波那契数列:")print(n1, ",", n2, end=" , ")while count < num:nth = n1 + n2print(nth, end=" , ")# 更新值n1 = n2n2 = nthcount += 1
结果:
二、利用递归函数实现
代码如下:
# 利用递归函数实现
def fib(x):if x <= 2:return 1else:return fib(x - 2) + fib(x - 1)
n=int(input('请输入n值:'))
for i in range(1, n+1):print(fib(i), end=" , ")
结果:
三、循环
代码如下:
def fib(number):a = 1b = 1n=1while n <= number: # 当斐波那契数小于等于number时结束循环print(a, end=" ", )a, b = b, a + bn=n+1
fib(10)
结果:
四、利用列表实现
代码如下:
# 利用列表实现
inputnum= int(input('请输入数值:'))
a = [1, 1]for i in range(2, inputnum):num = (a[i - 1] + a[i - 2])a.append(num)
print(a)
结果:
五、利用reduce实现
代码如下:
# 利用reduce实现
from functools import reduce
def nihao(prev,b):print(prev)return [ prev[1],prev[0] + prev[1] ]def fib_reduce(n):initial = [0, 1]dummy = range(n)fib_n = reduce(nihao,dummy,initial)return fib_n[0](fib_reduce(10))
结果:
六、利用生成器实现
代码如下:
import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n):returnyield aa, b = b, a + bcounter += 1f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True:try:print(next(f), end=" ")except StopIteration:sys.exit()
结果:
七、利用魔术方法实现
【Python魔术方法】迭代器(iter__和__next):
代码如下:
class Person(object):def __init__(self,xname):self.name = xname# 斐波拉契数列前两个值是固定self.a ,self.b = 0,1# person默认不是可迭代对象,变成一个可迭代对象,必须返回一个迭代器def __iter__(self): # 生成一个斐波拉契数列return self# person就变成一个迭代器def __next__(self):self.a ,self.b = self.b, self.a+self.b # 计算下一个值if self.a > 1000: # 如果出现一个大于1000的数字,退出循环raise StopIterationreturn self.aif __name__ == '__main__':p = Person('张三')for n in p:print(n)
结果:
Python多种方法生成菲波那切数列相关推荐
- 008 -菲波那切数列
对第n位菲波那切数列的值进行求解 菲波那切数列 (1)递归方法实现 //递归实现斐波那契数列public static int calculateOne(int num) {if(num==0)ret ...
- 求菲波那切数列数列第n项三种方法小结
菲波那切数列数列的应用场景还是比较多的,比如可以在考试的时候考你递归啊,早上碰到的一道题就是这样,骄傲地写下递归方程,结果TLE了,然后旁边的大神给我说了一个叫滚动数组的东西...题目是这样的You ...
- 使用python实现菲波那切数列
菲波那切数列:0,1,1,2,3,5,8,13,21,34,55,89,144,233 这个就是我们常见的菲波那切数列,菲波那切数列的特点之一就是除了前两项后面任意一项都是他前面的两项之后得到的 纳闷 ...
- python函数-返回菲波那切数列for,range,append
#返回菲波那切数列的列表 def fibs(num): fibs=[0,1] for i in range(num): fibs.append(fibs[-2]+fib ...
- Python之菲波那切数列
1.菲波那切数列指的是这样一个数列:1.1.2.3.5.8.13.21.34....求第n项. def fibonacci(n):if n == 1:return 1if n == 2:return ...
- php菲波那切数列,php实现菲波那切数列和杨辉三角
1.递归 显示斐波那契数列 function recursion($num){ //判断是否小于0 if($num<0){ return -1; } if($num==1){ return 0 ...
- 【君义精讲】多种方法求斐波那契数列
概念 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列&q ...
- 阶乘 c语言 fushu,JS递归实现阶乘和菲波那切数列
当我们需要使用递归来完成某些操作的时候,我们先要了解什么是递归 什么是递归? 递归,就是在运行的过程中调用自己. 一般来说,递归需要有边界条件.递归前进段和递归返回段. 当边界条件不满足时,递归前进: ...
- 剑指offer:菲波那切数列
一.题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项.n<=39 解题思路: 菲波那切数列:指的是这样一个数列:1.1.2.3.5.8.13.21.34.- ...
最新文章
- Linux 关机命令介绍shutdown
- html页面获取get传递过来的值,在HTML中用js获取通过GET、POST方法(就是在网址后加?a=bc=d之类)传过来的表单值...
- from torch._C import * ImportError: DLL load failed 动态链接库(DLL)初始化例程失败
- pdf.js 在线阅读PDF
- 支架预压弹性变形值计算_桥梁支架的预压方法与流程
- 【Tomcat】解决GET方式传递的参数(URL中的参数)乱码问题
- 兰大202005批次计算机基础,【每日一校】2020年兰州大学 各批次录取人数与分数线统计...
- 44年前的今天,改变世界的TA诞生了! | 极客头条
- 正则表达式 判断 连号如“123456”、同号如“888888”、连同号如“112233”“222333”...
- docucentre s2011默认登录密码
- wilcoxon符号秩检验matlab,符号检验和wilcoxon符号秩检验的区别
- Chrome插件开发练习 - 还未完成
- 怎样批量修改图片尺寸?
- 人脸识别打卡机怎么调sj_人脸通怎么使用_人脸通考勤机怎么设置
- symbol是c语言标识符,symbol的理解
- 想要做网页游戏怎么办 ?PixiJs 篇(四)
- TIA西门子博途V17安装教程及注意事项
- 【建议收藏】2020年中高级Android大厂面试秘籍,为你保驾护航金三银四,直通大厂(Android高级篇下)...
- k8s UAT改环境
- 云计算基础架构 (三)Mongodb