Java算法中的兔子问题,假设有一只兔子,从出生后的第三个月起每个月都生一只兔子,小兔子长到第三个月后每个月又能生一只兔子,假设兔子都不死,问每个月的兔子总数是多少?

在写代码之前先想明白算法,假设第一个月的兔子数为:a,第二个月的兔子数为:b假设第一个月的新兔子数为 :new,老兔子数为:old    即:a=new + old;,则第二个月b= new + 2*old;到了第三个月的时候,则第二个月的new存储的已经是老兔子,新兔子实际是old产生的,所以第三个月的兔子数量为:c= 2*(new + old) + old,通过上面的规律我们发现:当月的new的数量和上个月的old数量是相等的,当月的old的数量是上个月的new与上个月的old的数量之和,当月的总数量是当月的new和当月的old的数量之和,因此转换为代码实现如函数:rabbitProblem_new(),程序清单如下:

package tuzi;

/**

*

* @author mjd

*/

public class Tuzi {

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

// TODO code application logic here

rabbitProblem_new_digui(1,1,0);

}

public static void rabbitProblem_new(){

int sum_rabbit = 0;

int new_rabbit = 1;

int old_rabbit = 0;

int temp_new = 0;

for(int i=1;i<=12;i++){

sum_rabbit = new_rabbit+old_rabbit;

temp_new = old_rabbit;

old_rabbit = old_rabbit+new_rabbit;

new_rabbit = temp_new;

System.out.println("第"+i+"个月的兔子总是:"+sum_rabbit);

}

}

public static void rabbitProblem_new_digui(int i,int new_rabbit,int old_rabbit){

int sum_rabbit = 0;

int temp_new = 0;

sum_rabbit = new_rabbit+old_rabbit;

if(i==12){

System.out.println("第"+i+"个月的兔子总是:"+sum_rabbit);

return;

}else{

temp_new = old_rabbit;

old_rabbit = old_rabbit+new_rabbit;

new_rabbit = temp_new;

rabbitProblem_new_digui(i+1,new_rabbit,old_rabbit);

}

System.out.println("第"+i+"个月的兔子总是:"+sum_rabbit);

}

}

程序运行结果如下,正确运行,解决兔子算法问题。

java兔子问题编程思路详解_Java算法之“兔子问题”相关推荐

  1. java兔子问题编程思路详解_java语言求解兔子问题代码分析

    1.思考 兔子问题,是费氏数列的形象化说法,它是由一位名为Fibonacci的数学家在它的著作中提出的一个问题. 2.描述 它体术的问题是:若有一只免子每个月生一只小免子,一个月后小免子也开始生产.起 ...

  2. java对文件的操作详解_Java 对 Properties 文件的操作详解及简单实例

    Java 对 Properties 文件的操作详解及简单实例 发布于 2020-8-7| 复制链接 摘记: Java 对 Properties 文件的操作简介在 Java 中,我们常用 java.ut ...

  3. 它来了,阿里架构师的“Java多线程+并发编程”知识点详解手册,限时分享

    自学Java的时候,多线程和并发这一块可以说是最难掌握的部分了,很多小伙伴表示需要一些易于学习和上手的资料. 所以今天这份「Java并发学习手册」就是一份集中学习多线程和并发的手册,PDF版,由Red ...

  4. java web文件上传详解_java web图片上传和文件上传实例详解

    java web图片上传和文件上传 图片上传和文件上传本质上是一样的,图片本身也是文件.文件上传就是将图片上传到服务器,方式虽然有很多,但底层的实现都是文件的读写操作. 注意事项 1.form表单一定 ...

  5. Java中static的作用详解_java中static作用详解

    static表示"全局"或者"静态"的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念. 被static ...

  6. java调用百度推送详解_Java 以 Post 方式实现百度 Sitemap 实时推送

    Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简单的 Sitemap 形式,就是XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间.更改的 ...

  7. JAVA集合Set之HashSet详解_Java基础———集合之HashSet详解

    1.HashSet简介 Set是一个继承于Collection的接口,即Set也是集合中的一种.Set是没有重复元素的集合. HashSet是Set接口典型实现,它按照Hash算法来存储集合中的元素, ...

  8. java语言数据库编程_JAVA语言数据库编程实例详解

    本文主要向大家介绍了JAVA语言数据库编程实例详解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. DOS命令登录MySQL数据库:mysql -h 127.0.0.1 -u root ...

  9. Java编程配置思路详解

    Java编程配置思路详解 SpringBoot虽然提供了很多优秀的starter帮助我们快速开发,可实际生产环境的特殊性,我们依然需要对默认整合配置做自定义操作,提高程序的可控性,虽然你配的不一定比官 ...

最新文章

  1. linux 常用命令摘录
  2. zookeeper做分布式锁
  3. 01-Flutter移动电商实战-项目学习记录
  4. App 运营的指标具体都有哪些?(四)
  5. 支持向量机——深度AI科普团队
  6. 做一个好女朋友的59条 ,你能做到几条?
  7. Zabbix(三)zabbix平台添加服务监控选项(http、nginx、mysql)
  8. 教你win7显卡驱动如何安装,win7电脑显卡驱动的安装方法
  9. Opencv环境配置
  10. AT89C51单片机制作简易密码锁
  11. ubuntu18.04使用网易云音乐 ubuntu网易云音乐打不开怎么办? ubuntu安装网易云音乐
  12. 用matlab求摆线,求由摆线x=a(t-sint),y=a(1-cost)的一拱(0≦t≦2π)与x轴所围成的图形面积...
  13. 一元二次方程求根c语言编码,一元二次方程求解程序完整代码
  14. 【转载】FreeIPA中间CA证书已过期
  15. des加密算法(des加密算法的密文分组长度)
  16. How to recognise a good programmer
  17. 中国商用清洁机器人产业“十四五”规划展望及项目可行性分析报告2021-2027年
  18. 如何光盘启动安装操作系统
  19. python识字_“我女儿刚学会走路,我要在她识字后教她学Python吗?
  20. 不属于rh2285服务器运行电磁环境条件,传输设备-L1-L2试题

热门文章

  1. MATLAB基本二维曲线绘制
  2. 设计模式笔记八:过滤器模式
  3. python爬取知乎页面的LaTeX公式
  4. (组合数学笔记)拆分数各类定义及公式总结
  5. 问题:如何将多个文件里内容都提取出来
  6. wcdma系统随机接入过程的流程图_WCDMA终端的随机接入过程的射频测试
  7. 川大计算机学院研究生分数线,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...
  8. php怎么去除内容,php怎么把html标签去除?
  9. 扑捉和捕捉的区别照相_扑捉和捕捉的区别照相
  10. linux c语言 延迟,linux下写个C语言程序,要求有0.5微秒以下的延时,要怎样写