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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangyuyus 中级黑马   /  2013-11-2 15:53  /  938 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class tuzi {

        /**
         * 有一对兔子,从出生后3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
         * 假如兔子不死,问每个月兔子总数为多少?
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                System.out.println("第1个月的兔子对数:1");
                System.out.println("第2个月的兔子对数:1");
                int f1=1;
                for(int i=3;i<1000;i++){
                        f1=f1+2;
                        if(i/3==0){
                                f1=f1+2;
                        }
                        System.out.println("第"+i+"个月的兔子对数:"+f1);
                       
                }
        }

}

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

正序浏览
package com.itheima;

public class Fibonacc_test {

        /**
         * 有一对兔子,从出生后3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
     * 假如兔子不死,问每个月兔子总数为多少?
         * @param args
         *思路:其实这是一个经典的斐波那契数列,1,1,2,3,5,8,13......即前面两项的和为第三项
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
        System.out.println("第1个月兔子总数为:1对");
        System.out.println("第2个月兔子总数为:1对");
        int f1=1,f2=1,f,month=24;//这里暂定最多24个月,毕竟实际情况中兔子寿命有限
        for(int i=3;i<=month;i++)//用到迭代方法哦,看下面
        {
                f=f2;
                f2=f1+f2;
                f1=f;
                System.out.println("第"+i+"个月兔子总数为:"+f2+"对");
        }
        }

}

控制台:
第1个月兔子总数为:1对
第2个月兔子总数为:1对
第3个月兔子总数为:2对
第4个月兔子总数为:3对
第5个月兔子总数为:5对
第6个月兔子总数为:8对
第7个月兔子总数为:13对
第8个月兔子总数为:21对
第9个月兔子总数为:34对
第10个月兔子总数为:55对
第11个月兔子总数为:89对
第12个月兔子总数为:144对
第13个月兔子总数为:233对
第14个月兔子总数为:377对
第15个月兔子总数为:610对
第16个月兔子总数为:987对
第17个月兔子总数为:1597对
第18个月兔子总数为:2584对
第19个月兔子总数为:4181对
第20个月兔子总数为:6765对
第21个月兔子总数为:10946对
第22个月兔子总数为:17711对
第23个月兔子总数为:28657对
第24个月兔子总数为:46368对

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
咋们可以研究一下每个月兔子的数量变化:
第一个月:1对
第二个月:1对
第三个月:2对(第一个月的兔子生了一对)
第四个月:3对(第一个月的兔子又生了一对)
第五个月:5对(第一个月的兔子再生了一对,它们生出的第一对兔子开始生兔子了,生了一对)
按照这个规则产生的数据就是1,1,2,3,5,8,13,21........(从第二个数开始前两个只和即为后一个的值(假设第一个数之前为0))

所以产生的代码如下:
  1. public class rabbit {
  2.           /**
  3.      * 有一对兔子,从出生后3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
  4.      * 假如兔子不死,问每个月兔子总数为多少?
  5.      * @param args
  6.      */
  7.     public static void main(String[] args) {
  8.             // TODO Auto-generated method stub
  9.             System.out.println("第1个月的兔子对数:1");
  10.             System.out.println("第2个月的兔子对数:1");
  11.             int h1=0;//第零月的兔子
  12.             int h2=1;//第一月的兔子
  13.             int sum=0;
  14.             for(int i=3;i<30;i++)
  15.             {
  16.                     sum=h1+h2;//后一个月的兔子是前两个月兔子之和
  17.                     System.out.println("第"+i+"个月的兔子对数:"+sum);
  18.                     h1=h2;//将前一个月的兔子总数保存在后一个月兔子总数的变量中
  19.                     h2=sum;//将当前的兔子保存在前一个月兔子总数的变量中   
  20.                    
  21.                     //这样,下次累加的就是附近两个数字的和了
  22.                     //做这样的题,要找出它的规律,才能迎刃而解
  23.            }
  24.     }
  25.   }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
fibonacci数列,一般是用迭代来做,你可以百度一个java是怎么实现fibonacci数列模拟的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马