python生兔子问题(递归算法)_用python函数写斐波那契数列

python生兔子问题(递归算法)_用python函数写斐波那契数列兔子产子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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/165713.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 新建一个vue项目[通俗易懂]

    新建一个vue项目[通俗易懂]1.npm install -g vue-cli2.vue init webpack demo1demo1自定义项目名称创建成功后可以在目录下看到文件夹3.static文件夹用于存放一些静态资源,如图片图标等4. 组件存放在src/components文件夹中5.配置路由 ①package.json里查看”dependencies”是否有:”vue-router”: “^3.0.1″,没有就加上去 ②”src”目录下main.js是否引入路由,没有就加上 …

  • tomcat官网如何下载低版本的tomcat

    tomcat官网如何下载低版本的tomcat

  • fork join框架_笔记框架图怎么做

    fork join框架_笔记框架图怎么做什么是Fork/Join框架Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干 个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 我们再通过Fork和Join这两个单词来理解一下Fork/Join框架。Fork就是把一个大任务切分 为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结 果。比如计算1+2+…+10000,可以分割成10个子任务,每个子任务分别对1000个数进行求和, 最终汇总这10个子任务的结果。Fork/

  • matlab 图像填充斜线_怎么更改柱形图的填充

    matlab 图像填充斜线_怎么更改柱形图的填充针对这种情况,MATLAB提供了若干特殊图形绘制函数。接下来主要介绍特殊图形的绘制方法,主要图形包括:条形图、区域图、饼状图、柱状图、离散图、罗盘图、羽毛图、……针对这种情况,MATLAB提供了若干特殊图形绘制函数。接下来主要介绍特殊图形的绘制方法,主要图形包括:条形图、区域图、饼状图、柱状图、离散图、罗盘图、羽毛图、……[0,7,-2,2]);MATLAB提供的统计…

    2022年10月19日
  • VMware16NAT模式配置固定IP[通俗易懂]

    VMware16NAT模式配置固定IP[通俗易懂]文章目录前言一、NAT配置固定IP二、重启网卡结尾前言为什么要配置固定IP呀?这个很容易解释啊,因为配置集群要设置固定IP(主结点需要管理子结点,通过固定IP识别机器),因为你访问虚拟机方便(不固定IP访问前还需要先查下虚拟机当前分配IP,比较麻烦)等等。配置固定IP采用哪种网络配置方式呢,NAT,桥接?仅主机反正是不行的,不能联网啊。NAT也叫网络地址转换,通常它的名称为VMnet8,通过nat的连接方式可以使得虚拟机和真实机的网卡在不同的网段中,从而实现联网。而bridge也叫桥接,通常它的名称

  • Vagrant系列(二)—-Vagrant的配置文件Vagrantfile详解

    Vagrant系列(二)—-Vagrant的配置文件Vagrantfile详解

发表回复

您的电子邮箱地址不会被公开。

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