首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

兔子产子 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个月以上的为老兔子。...总结数列规律即为从前两个月的兔子对数可以推出第3个月的兔子对数 3.算法设计 本题目是典型的迭代循环,即是个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值的过程。...经过问题分析,算法可以描述为 fibn-1 = fiibn-1 = 1(n<3) 初值 fibn = fibn-1 + fibn-2(n≥3) 迭代公式 用 Python 语言來描述迭代公式即为

37120

有一对兔子,从出生后第3个月起每个月都一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第n个月的兔子对数为多少?

需求 古典问题:有一对兔子,从出生后第3个月起每个月都一对兔子,小兔子长到第三个月后每个月又生一对兔子假如兔子都不死,问第n个月的兔子对数为多少?...从中找出规律:从第三个月开始,前两个月兔子数之后为第三个兔子总数 预想效果: 输入0月份时,输出错误 请输入需要查询的月份:0 月份输入错误!...,从出生后第3个月起每个月都一对兔子,小兔子长到第三个月后每个月又生一对兔子 假如兔子都不死,问第n个月的兔子对数为多少?...int rabbitSum = 0; //定义上个月的兔子个数 也就是2月兔子的个数 下面会用for循环相加 兔子总对数=上个月兔子对数+上上月兔子对数...for (int i = 3; i <= month; i++) { //兔子总对数=上个月兔子对数+上上月兔子对数 //这个总对数(三月兔子的总对数

2.5K20

Python程序模拟手工推算考虑兔子寿命的斐波那契数列

,从第3个月开始就每个月一对兔子的每一对兔子长到第3个月也开始每个月都一对兔子,每一对兔子都是这样从第3个月开始每个月一对兔子,那么每个月小明家的兔子数量(对)构成一个数列,这就是著名的斐波那契数列...现在的问题是,如果假设每一对兔子的寿命都是72个月,并且只要活着就坚持每个月一对小兔子。...第一个程序的思路是,每行的数字表示这个月新出生的兔子数量,行的长度表示这些新生兔子存活的月数,这样的话每列数字之和就是这个月的兔子数量(单位:对),如下图所示: ?...第二个程序的思路是,以下图为例,每往下一行往右一列表示兔子长大一个月,行数与兔子寿命月数一样多,第n列的数字之和即为该月兔子总数(单位:对) ?...生成上面Excel文件的Python程序如下,可以通过调整main()函数的参数任意设置兔子从第几个月开始兔子以及兔子的寿命。 ?

57810

狼抓兔子

id=1001 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点为(1,1...上图中N=4,M=5).有以下三种类型的道路 1:(x,y)(x+1,y) 2:(x,y)(x,y+1) 3:(x,y)(x+1,y+1) 道路上的权值表示这条路上最多能够通过的兔子数...左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现在它们要跑到右下解(N,M)的窝中去,狼王开始伏击这些兔子.当然为了保险起见,如果一条道路上最多通过的兔子数为K,狼王需要安排同样数量的...K只狼,才能完全封锁这条道路,你需要帮助狼王安排一个伏击方案,使得在将兔子一网打尽的前提下,参与的狼的数量要最小。

72750

算法详解 - 神奇的兔子数列

算法知识点 递归、斐波那契数列 算法题目来源 异步社区 算法题目描述 假设第一个月有一对初生的兔子,第2个月进入成熟期,第三个月进行生育兔子,而一对成熟的 兔子每月会生1对兔子兔子永不死去,那么从第一对初生的兔子开始...,12个月后会有多少只兔子?...第1个月,小兔子①没有没有繁殖能力,所以还是1对 第2个月,小兔子①进入成熟期,所以还是1对 第3个月,兔子①生了一对兔子②,于是共有2对兔子 第4个月,兔子①生了一对兔子③,共有3对兔子 …...以此类推 这个数列有十分明显的特点:从第三个月开始, 当月的兔子数量 = 上月兔子数 + 当月新生兔子 当月新生兔子 = 上上个月的兔子 因此,前面相邻两项之和,便构成了后一项,换言之...当月兔子数 = 上月兔子数 + 上上月兔子数 斐波那契数列如下: 1,1,2,3,5,8,13,21,34,… 递归表达式如下: 模板代码 int Fib1(int n){ if

69330

原生JS | 当兔子遇到鸡

HTML5学堂-码匠:当兔子遇到鸡,会怎样呢?先别急,看个小视频~ 视频内容 当兔子遇到鸡 —— 不要害怕和别人不一样,在这个世界上,你就是独一无二的自己!...不知道有多少程序在看到这个小视频的时候,想到的不是“复活节”彩蛋,而是“鸡兔同笼问题”…… 如果你想到的是“鸡兔同笼”,那么恭喜你,至少你不是一个人……(表示看到兔子从蛋里钻出来的时候,竟然完全没有怀疑...鸡兔同笼功能的基本实现 鸡兔计算的核心公式 兔子数量 = 脚数 / 2 - 头数; 鸡数量 = 头数 - 兔子数量。...Tips:当然,如果你考虑用for循环,从1只兔子到N只兔子,一个一个尝试组合,也并非不可,但是循环匹配的方法计算效率实在是太低了,并不推荐。另外,关于公式的“推导”过程,可详见下图: ?...对于此类问题,需要借助数字取整来检测,此处HTML5学堂(码匠)使用的是parseInt方法,针对兔子的数字取整,然后再跟原始的兔子数字比较,如果相同,则原始数字为整数。

2K100

C语言结构体实例-创建兔子

// 参数:无 // 返回:兔子的类型 // 备注: unsigned rabbitId(void) { return ID_RABBIT; } // 功能:返回兔子的食物 // 参数:无 //...// 功能:返回兔子的敌人 // 参数:无 // 返回:兔子的敌人 // 备注:多种敌人一次返回 unsigned rabbitEnemy(void) { return ID_WOLF; } //...功能:兔子吃 // 参数:food,unsigned类型,喂给兔子的食物 // 返回:0:没吃成 // 1:吃成了 // 备注: char rabbitEat(unsigned food)...{ // 都说兔子不吃窝边草 // 那么不是窝边的草就可以吃 // 它兔窝边的草不是我窝边的草,所以也可以吃 // 还有,萝卜和青菜,也可以吃 // 兔子不能吃兔子,不能吃鱼,更不能吃狼 return...} // 功能:兔子类创建 // 参数:aRabbit,TRabbit类型,一只兔子 // 返回:无 // 备注: void rabbitCreate(struct TRabbit *obj) {

1K20

算法-经典趣题-兔子产仔

一、问题 兔子产仔是一个非常古老而经典的问题,其与数论有关。...兔子产仔问题最早记载于13世纪意大利数学家斐波那契的《算盘书》,其大意如下:如果一对两个月大的兔子以后每一个月都可以一对小兔子,而一对新生的兔子出生两个月后才可以兔子。...那么假定一年内没有发生兔子死亡事件,那么1年后共有多少对兔子呢? 二、问题分析 先来分析一下兔子产仔问题。下面逐月分析每月的兔子对数。...第一个月:1对兔子; 第二个月:1对兔子; 第三个月:2对兔子; 第四个月:3对兔子; 第五个月:5对兔子; …… 可以看出,从第3个月开始,每个月的兔子总对数等于前两个月兔子数的总和。...可以按照此思路来编写相应的兔子产仔问题的求解算法,代码如下: package com.joshua317; import java.util.Scanner; public class Main {

48120

我用 Python 面向对象做算法题,她说要先给兔子找上对象

她:“不懂什么是面向对象” 我:“就是面对着你” 她:“那得先给兔子找上对象,不止是个数学问题” 我:“……” 我:“人家就是一对兔子” 她:“哦,的还得是一对兄妹,然后近亲结婚是么” 我:“……”...---- 好,让我们回到那个兔子的算法题,同时也正好拿这个题目来说道说道“面向过程”和“面向对象”的概念。 ? #面向过程 如果没有接触过斐波那契数列,初遇这题会一脸懵。...Python 代码如何实现该过程呢?...百度百科-面向对象 正如我们所知,Python 是一门面向对象的编程语言,其中通过 Class 类来描述具有相同的属性和方法的对象的集合,而对象也就是类的实例。...最终我们只要给定时间,便可通过兔子对象的数量属性获取到结果了~ # 面向对象编程解决兔子问题 # python 中通过 class 这个类来定义对象,我们给定义的对象取名 rabbit_pair (兔子

44010
领券