加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 00:56:06 所属栏目:Python 来源:网络整理
导读:斐波那契数列 1. 斐波拉契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在

斐波那契数列

1. 斐波拉契数列简介

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果。

加/X:mmp9972 ?即可获取数十套PDF!

其实就是从第三项开始,每项的值等于前两项的和。

下面是在面试中常见的问题:青蛙跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

只有一级台阶时,1;

有两节台阶的时候有两种跳法,11和2;

有三节台阶的时候有三种跳法,111、12、21

有四阶台阶的时候,有五种跳法,1111、112、121、22、211

2. 实现斐波拉契数列生成

2.1 使用匿名函数的方式生成

 fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)

通过执行 fib(n) 来输出斐波那契数列前n项的值。

也可以通过 listData = [fib(i) for i in range(1,n)] 来生成斐波拉契数列前n项的值,最后通过 print listData 可以打印出结果。

2.2 利用装饰器的方式生成

 def memo(func):
 cache = {}
 def wrap(*args):
 if args not in cache:
 cache[args] = func(*args)
 return cache[args]
 return wrap
@ memo
def fib(i):
 if i < 2:
 return 1
 return fib(i-1) + fib(i-2)

2.3 定义简单的方法来实现

 def fib(n):
 a,b = 0,1
 for _ in xrange(n):
 a,b = b,a + b
 return b

2.4 利用迭代器的方式实现(Python3)

 class Fib(object):
 def __init__(self):
 self.prev = 0
 self.curr = 1
 def __iter__(self):
 return self
 def __next__(self):
 value = self.curr
 self.curr += self.prev
 self.prev = value
 return value

2.5 利用迭代器的方式实现(Python2)

python2需要修改 __next__(self) :方法,其实生成的是一个无限循环的迭代器,也可以使用 itertools模块把无限迭代器转为有限迭代器。

 from itertools import islice
 class Fib:
 def __init__(self):
 self.prev = 0
 self.curr = 1
 def __iter__(self):
 return self
 def __next__(self):
 value = self.curr
 self.curr += self.prev
 self.prev = value
 return value
 >>> f = Fib()
 >>> list(islice(f,10))
 [1,1,2,3,5,8,13,21,34,55]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读