A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 25343215 高级黑马   /  2013-12-18 10:53  /  2110 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 25343215 于 2013-12-18 17:09 编辑

       题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问在20个月里的兔子总数为多少? (请用递归实现)
       在企业面试中,算法常常都是重要考点!所以在学习Java过程中,要抽出时间多做做多看看算法题目。
       在代码中请提供题目de分析!

           我已经在第12楼公布我做的答案,及代码分析。欢迎一起学习!

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

15 个回复

倒序浏览
Y_Y 发表于 2013-12-18 11:21
public class exp2{
        public static void main(String args[]){
                int i=0;

递归分析呢?
回复 使用道具 举报
回复 使用道具 举报

一步步学喽。方丈高楼,平地起。
回复 使用道具 举报
風諾 发表于 2013-12-18 15:20
斐波那契数列吗?
为啥我分析出来这样?感觉不是啊。
         * 第n个月兔子总数f(n)与当月成熟兔子和小兔 ...

最开始我也是和你这样分析的。但答案是:兔子的规律为数列2,2,4,6,10,16,....  

回复 使用道具 举报
  1. package cn.itcast;
  2. /**
  3. * 【程序1】  
  4. * 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
  5. * 小兔子长到第3个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?  
  6. *
  7. * 分析:        第一个月        1 对
  8. *                         第二个月  1 对
  9. *                         第三个月  2 对
  10. *                         第四个月  3 对
  11. *                         第五个月  5 对
  12. *                         第六个月  8 对
  13. *                         第七个月  13 对
  14. *                 规律:       
  15. *                         从第三个月开始,都是后两个月相加
  16. *                         f(n)=f(n-1)+ f(n-2)
  17. *                        
  18. *                 出口:1月份、2月份 ,为已知的值 1对
  19. *                
  20. * @author Administrator
  21. *
  22. */
  23. public class Test {
  24.         public static void main(String[] args) {

  25.                 for (int i = 1; i <=20; i++) {
  26.                         System.out.println("第"+i+"个月兔子数为:"+f(i)+"个");
  27.                 }
  28.         }

  29.         public static int f(int n){
  30.                 if(n==1||n==2){
  31.                         return 2;
  32.                 }else{
  33.                         return f(n-1)+f(n-2);
  34.                 }
  35.         }
  36. }
复制代码


结果:
第1个月兔子数为:2个
第2个月兔子数为:2个
第3个月兔子数为:4个
第4个月兔子数为:6个
第5个月兔子数为:10个
第6个月兔子数为:16个
第7个月兔子数为:26个
第8个月兔子数为:42个
第9个月兔子数为:68个
第10个月兔子数为:110个
第11个月兔子数为:178个
第12个月兔子数为:288个
第13个月兔子数为:466个
第14个月兔子数为:754个
第15个月兔子数为:1220个
第16个月兔子数为:1974个
第17个月兔子数为:3194个
第18个月兔子数为:5168个
第19个月兔子数为:8362个
第20个月兔子数为:13530个
回复 使用道具 举报
風諾 发表于 2013-12-18 15:55
没感觉那里分析错了啊
可不可以讲讲

12楼。我把我的想法,写上面了。
回复 使用道具 举报
hurryup 发表于 2013-12-18 16:05
我也是理解为每隔三个月就有一对兔子长大并且有生了一对小兔子,这种情况怎么设计呢?求解! ...

12楼。我把我的想法,写上面了。欢迎一起学习
回复 使用道具 举报
風諾 发表于 2013-12-18 17:43
我觉得貌似一开始题目写的是小兔子第四个月开始生兔子,现在看好像变了
要是按照原来的这样貌似可以的:
...

嗯。。4变3了。

我开始做4也没做出来。然后问了一下,应该是每三月。才行。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马