您现在的位置是:群英 > 开发技术 > Python语言
Python怎样计算兔子生崽问题,思路是什么?
Admin发表于 2021-12-29 18:30:241371 次浏览

    Python怎样计算兔子生崽问题?兔子生崽问题其实是很经典的一个斐波那契数列算法练习,具体的问题是,一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有的兔子都不死,那么30个月内每个月的兔子总对数为多少呢?接下来小编就和大家一起来分析和解决这个问题。

    问题分析

    兔子产子问题是一个有趣的古典数学问题,我们画一张表来找下兔子数的规律,如下表所示

月数 小兔子对数 中兔子对数 老兔子对数 兔子总对数
1 1 0 0 1
2 0 1 0 1
3 1 0 1 2
4 1 1 1 3
5 2 1 2 5
6 3 2 3 8
7 5 3 5 13

说明:不满1个月的兔子为小兔子,满1个月不满2个月的为中兔子,满3个月以上的为老兔子。

    可以看出,每个月的兔子总数依次为1,1,2,3,5,8,13...这就是Fibonacci数列。总结数列规律即为从前两个月的兔子对数可以推出第3个月的兔子对数

    算法设计

    本题目是典型的迭代循环,即是个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值的过程。这种选代与这些因素有关:初值迭代公式选代次数

    经过问题分析,算法可以描述为:

fibn-1 = fiibn-1 = 1(n<3) 初值
fibn = fibn-1 + fibn-2(n≥3) 迭代公式

    用 Python 语言-描述迭代公式即为fib=fibl+fib2,其中fib为当前新求出的免子对数,fibl 为前一个月的兔子对数,fib2为前两个月的免子对数,然后为下一次选代做准备,fib②给fib1①给fib2,进行如下的赋值 fib2=fib1, fibl=fib,要注意赋值的次序;选代次数由循环变量控制,为所求的月数。

    完整程序

Bash
if __name__=="__main__":
    fib1 = 1
    fib2 = 1
    i = 1
    while i <= 15:  #每次求两个,因此循环变量循环到15
        print("%8d    %8d" %(fib1, fib2), end="      ")
        if i % 2 == 0:
            print()
        fib1 = fib1 + fib2  # 最新一个月的兔子数
        fib2 = fib1 + fib2  # 第4个月的兔子数
        i += 1

    以上就是关于Python计算兔子生崽问题的解答,这篇算法练习对大家学习和理解斐波那契数列有一定的参考价值,需要的朋友可以了解看看。最后,想要了解更多斐波那契数列的内容,可以继续浏览群英网络其他相关的文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

相关信息推荐
2022-06-08 17:34:09 
摘要:​下面由golang教程栏目给大家分享golang实现文件传输小demo ,希望对需要的朋友有所帮助!获取文件信息需要用到os. Stat接口,发送文件前开启接收者(服务端),启动客户端先发送文件名给接收者,接收者收到文件名返回确认信息..
2021-12-30 20:34:56 
摘要:这篇文章给大家分享的是Jetty的相关内容,对于新手来说,可能不是很了解Jetty是什么,对此本文就给大家来详细的介绍一下Jetty的特性以及用法,对大家了解和学习Jetty的使用都有帮助,那么感兴趣的朋友接下来一起跟随小编看看吧。
2022-09-15 17:48:12 
摘要:本篇文章给大家带来了关于java的相关知识,动态代理指的是,代理类和目标类的关系在程序运行的时候确定的,客户通过代理类来调用目标对象的方法,是在程序运行时根据需要动态的创建目标类的代理对象。下面将通过案例详细讲解一下Java动态代理的原理及实现,希望对大家有帮助。
云活动
推荐内容
热门关键词
热门信息
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部