python学习第四十四天斐波那契数列和yield关键词使用

斐波那契数列是数学中的常见的算法,第一个第二个不算,从第三个开始,每个数的都是前面两个数的和,使用yield关键词把生成的数列保存起来,调用的时候再调用,下面举例说明一下

def fab(max):
  n, a, b = 0, 0, 1
  while n < max:
    yield b
    # print b
    a, b = b, a + b
    n = n + 1

调用方式

>>> for n in fab(5):
... print n
...
1
1
2
3
5

在这里yield起到关键的作用

文章来自 http://www.96net.com.cn

原文地址:https://www.cnblogs.com/96net/p/9713688.html

时间: 2024-10-11 02:18:02

python学习第四十四天斐波那契数列和yield关键词使用的相关文章

第四章习题:斐波那.契数列&amp;&amp;吸血鬼数字

package com.twoslow.cha4; /** * 斐波那契数列:从3个数字起,每一个数都是前2个数之和:1 1 2 3 5 8 13... * @author sai * */ public class Fibonacci { public static void main(String[] args) { for(int i = 0 ; i < 10 ;i++) { System.out.print(fib(i) + "."); } } public static

购物登陆,列表生成式,生成器,斐波那契数列,yield伪并发,迭代器,时间模块,random模块

这次内容很多,比较重要 1.购物登陆(伪代码) user = 'hanjie'passwd = 123w_user = 'hanjie123'w_passwd = 123login_states = False def login(): if login_states== False: if auth_type == "jingdong": username = input ('please enter your username:') password = input ('pleas

Python递归及斐波那契数列

递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数.举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出:fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理.于是,fact(n)用递归的方式写出来就是: def fact(

用递归方法计算斐波那契数列(Recursion Fibonacci Python)

先科普一下什么叫斐波那契数列,以下内容摘自百度百科: 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因意大利数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,指的是这样一个数列:1.1.2.3.5.8.13.21.34...这个数列从第3项开始,每一项都等于前两项之和. 根据以上定义,用python定义一个函数,用于计算斐波那契数列中第n项的数字是多少: def fib_recur(n): if n==0 or n==1 : r

MIT Python 第四课函数抽象与递归简介 最后三分钟递归的经典案例:斐波那契数列

斐波那契数列Fibonacci Sequence,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*) 有一对一个月大的一公一母的兔子,再过一个月的时候交配生小兔子,假设它们生的是两只一公一母的小兔子,在下一个月末这两只小兔子也有了后代同样是一公一母,问题是一年后你会有多少只小兔子?[呲牙]第三年的时候就像到了澳大利亚... >>&g

NYOJ 461-Fibonacci数列(四)(求斐波那契数列前4位)

题目地址:NYOJ 461 思路:斐波那契数列的通项公式为 然后下一步考虑如何产生前4位: 先看对数的性质,loga(b^c)=c*loga(b),loga(b*c)=loga(b)+loga(c);假设给出一个数10234432, 那么log10(10234432)=log10(1.0234432*10^7)[用科学记数法表示这个数]=log10(1.0234432)+7; log10(1.0234432)就是log10(10234432)的小数部分. log10(1.0234432)=0.0

一起talk C栗子吧(第四回:C语言实例--斐波那契数列)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们说的是求阶乘的例子,这一回咱们说的例子是:斐波那契数列. 看官们,斐波那契数列是以数学家斐波那契数列的姓来命名的.斐波那契数列的定义:数列的第0项和第1项 为1,第n项为第n-1项和第n-2项的和.用数学公式表示出来就是:f(n)=f(n-1)+f(n-2),其中(n>1),f(n)=1;(n=0,1). 看官们,我在程序中使用了递归

【Python】【demo实验14】【练习实例】【斐波那契数列】【经典兔子生小兔子问题】

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 每个月的兔子数量 1:22:23:4 2+24:6 2+2+25:10 2+2+2+2+26:16 6+6+47:26 10+10+6 第一个月和第二个月兔子不繁殖 第三个月,两个兔子繁殖两个兔子,共四个 第四个月,两个兔子继续繁殖两个兔子,小兔子不繁殖:共6个 以此类推 2,2,4,6,10,16,26 这个数量刚好是斐波那契数列 的两倍 源代码: #

Python计算斐波那契数列

利用Python计算第一个达到一百万位数的斐波那契数列各位数之和 结果为4501552 以下是我用到的代码,不是中间需要一些人工操作来加快收敛性,有兴趣读者可以写代码加快收敛 首先执行这个,可以大致确定一百万个数所在斐波那契序列的位置 i=1 j=1 k=i+j count=3 while count<4850000: i=j j=k k=i+j count+=1 result=str(k) print('k长度') k_len=len(result) print(k_len) sum=0 fo