python生兔子问题(递归算法)_java实现斐波那契数列

python生兔子问题(递归算法)_java实现斐波那契数列兔子产子1.问题描述有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?2.问题分析兔子产子

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

兔子产子

 

1.问题描述

有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总对数为多少?
 

2.问题分析

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

月数 小兔子对数 中兔子对数 老兔子对数 兔子总对数
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个月的兔子对数
 

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,要注意赋值的次序;选代次数由循环变量控制,为所求的月数。
 

4.完整程序

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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164830.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux ettercap,linux下面ettercap的安装(双向arp欺骗)

    linux ettercap,linux下面ettercap的安装(双向arp欺骗)arpspoof真是老掉牙了,有以下三个缺点:1。不支持双向欺骗,要实现,只能启动两个进程。2。不支持多个ip,要不就是整个网段(除非也启动多个进程)3。不支持mac地址伪造。还是用ettercap吧,这个东西,介绍的资料都是windows下面的多。我的被控端是linux下呀,而目标是windows。没有办法,硬着头皮装吧:1..libnet-1.1.2.1.tar.gz2.libpcap-1.0…

    2022年6月28日
    27
  • YGC和FGC是什么「建议收藏」

    YGC和FGC是什么「建议收藏」1.YGC和FGC是什么YGC:对新生代堆进行gc。频率比较高,因为大部分对象的存活寿命较短,在新生代里被回收。性能耗费较小。FGC:全堆范围的gc。默认堆空间使用到达80%(可调整)的时候会触发fgc。以我们生产环境为例,一般比较少会触发fgc,有时10天或一周左右会有一次。2.什么时候执行YGC和FGCedn空间不足,执行younggcb.old空间不足,…

    2022年6月19日
    41
  • bool类型_bool类型什么为真

    bool类型_bool类型什么为真转自:http://www.vcgood.com/archives/3709我们知道在C++里有专门的bool类型,用来表示真或假。但是在C语言里没有这样的类型(至少我是一直这么认为的),表达式的值0

    2022年8月5日
    3
  • thinkPHP框架中执行原生SQL语句的方法

    thinkPHP框架中执行原生SQL语句的方法

    2021年10月21日
    33
  • 我竟然不再抗拒 Java 的类加载机制了

    我竟然不再抗拒 Java 的类加载机制了很长一段时间里,我对Java的类加载机制都非常的抗拒,因为我觉得太难理解了。但为了成为一名优秀的Java工程师,我决定硬着头皮研究一下。01、字节码在聊Java类加载机制之前,需要先了解一下Java字节码,因为它和类加载机制息息相关。计算机只认识0和1,所以任何语言编写的程序都需要编译成机器码才能被计算机理解,然后执行,Java也不例外。Java在诞生的时候喊出了…

    2022年5月10日
    33
  • SpringCloud—熔断器Hystrix的作用–解决灾难性雪崩效应

    SpringCloud—熔断器Hystrix的作用–解决灾难性雪崩效应

    2020年11月12日
    175

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号