【简洁之美】裴波那切数列生成器 python

裴波那切数列可以用生成器较好的去生成,直接上代码:

# 1 控制最大数字版本def fib(max):
	x,y = 0,1
	while y < max:
		yield x
		x,y = y,x+y
print [x for x in fib(100)]   #  输出[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

  

# 2 控制迭代个数版本
def fib(count):
	x,y,n = 0,1,1
	while n < count:
		yield x
		x,y = y,x+y
		n +=1
print [x for x in fib(10)]   #[0, 1, 1, 2, 3, 5, 8, 13, 21]

  

时间: 2024-12-12 04:18:45

【简洁之美】裴波那切数列生成器 python的相关文章

斐波那契数列的Python实现

? 斐波那契数列的Python实现:递归实现.非递归实现.斐波那契数列生成器: \[ \begin{equation} F(n)= \begin{cases} n & n=0, 1\F(n-1) + F(n-2) & n > 1 \end{cases} \end{equation} \] 递归实现: # python def fib(n): if n <= 1: return n else: return fib(n-1) + fib(n-2) 非递归实现: # python

Java程序设计之裴波拉切那数列(兔子一年的数量)

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 典型的裴波拉切那问题不多说了,直接上代码好了. import java.util.ArrayList; public class SecondThread{ static ArrayList<Integer> list = new ArrayList(); int num

Python yield 使用浅析 ----以裴波那契数列生成为例

转载请注明出处,http://blog.csdn.net/suool/article/details/38388681谢谢! 之前转过一篇讲Python生成器的博文,不过觉得不是很清晰,前几天见到有讲yield的文章,感觉还不错,遂整理于此,与诸君共享.愿共同进步. 我们先抛开 generator,以一个常见的编程题目来展示 yield 的概念. 如何生成斐波那契數列 斐波那契(Fibonacci)數列是一个非常简单的递归数列,除第一个和第二个数外,任意一个数都可由前两个数相加得到.用计算机程序

Python——从连续赋值到斐波拉切数列

Python中有一个非常简洁的赋值语句用法,就是连续赋值. 要分别给两个变量赋值,我的第一念头是如下: 1 a = 1 2 b = 2 但其实python还提供了一种更简洁的写法如下 1 a , b = 1 , 2 这时我们很自然的就能理解为按顺序赋值,a = 首位数字1,b = 次位数字2.但实际上并不仅仅如此. 连续赋值语句中等式右边其实都是局部变量,而不是真正的变量值本身.当等号右边是定值时,这样做当然没有问题.但是如果右边是一个含有变量的表达式,那么赋值时会采用截至本句代码前一句为止,各

js实现菲波那切数列的两种常用方法

菲波那切数列即:1 1 2 3 5 8......,后面的数字是前面两个数字的和,并且第一个,第二个数字都是1,用js实现 的两种方法,一种通过常用的递归调用,第二种不通过递归,而是通过强大的闭包实现. 1.递归实现 // fab 1 1 2 3 5 8 function fab(num) { if(num==1 || num==2){ return 1; }else{ return fab(num-1)+fab(num-2); } } alert(fab(5)) 2.闭包实现.闭包主要在于:1

用递归方法求裴波那契数列,以及指定某一位的数值

输出前20位裴波那契数列 function Fibonacci($j=1, $i=0, $v=0) { echo $j;echo "<br>"; if ($v>=20) { return; } Fibonacci($j+$i,$j, $v+1); } Fibonacci(); 指定获取 1 function Fibonacci($s=0, $j=1, $i=0, $v=0) 2 { 3 if ($s==($v+1)) return $j; 4 return Fibon

斐波那切数列

从变盘日期上看,周三是本轮下跌的最高点2334点下跌以来的第13个交易日,恰好符合了菲波那切变盘时间窗口的神奇数字.下面我简要的介绍一下什么是菲波那切时间变盘窗口.天行有常,世间万物变化有律.股票犹如人的生命一样,是处在二三十岁的青壮年期,还是处在七八十岁的古稀.耄耋之年?让我们运用菲波那切数列时间窗口来判断大盘的涨跌周期.我们首先介绍一下菲波那切数列,我们在中学上数学课时,老师曾讲过菲波那切数列. 1,1,2,3,5,8,13,21,34,55,89,144,233…这一组数字从第三项起,每一

菲波纳切数列

写一个函数,输入n,求斐波那契数列(Fibonacci)数列的第n项.斐波那契数列定义如下: 当n=0时,f(n)=0;当n=1时,f(n)=1;当n>1时,f(n)=f(n-1)+f(n-2). 效率很低的解乏,挑剔的面试官不会喜欢. public int fibo(int n){ if(n<=0) return 0; if(n==1) return 1; return fibo(n-1)+fibo(n-2); } 我们以求解f(10)为例来分析递归的求解过程.想求得f(10),需要先求的f

斐波拉契数列的python多种完美实现

强大,优雅,深入研究python后的重大发现.          让我们一起领略一下. 提到斐波拉契数列的实现,你可能首先会想到递归: def fibo(i): if i==0 or i==1: return 1 else: return fibo(i-1)+fibo(i-2) PS:递归有很多重复计算,比方说你计算f(5)时要去计算f(4)和f(3),而计算f(4)时又要去计算f(3),这样f(3)就重复计算了 完美实现方案一: 完美实现方案二: 完美实现方案三(参考python cookbo