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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 戴进飘 中级黑马   /  2012-10-25 11:39  /  1874 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 戴进飘 于 2012-10-26 16:10 编辑

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

这题我做了一半就写不出了,希望大家写一下,给个例子,能让我参考参考。

评分

参与人数 1黑马币 +30 收起 理由
唐志兵 + 30

查看全部评分

7 个回复

倒序浏览
up_ 中级黑马 2012-10-25 12:00:07
沙发
class Rabbit{
        public static void main(String[] args){
                  int month_num=10;//暂定输出10个月的
                     int[] temp = new int[month_num];
                        temp[0] = 1;
                        temp[1] = 1;
                        System.out.println("第1个月:" + temp[0]);
                        System.out.println("第2个月:" + temp[1]);
                        for (int i = 2; i < month_num ; i++) {
                         temp[i] = temp[i-1] + temp[i - 2];
                            System.out.println("第"+(i+1)+"个月:" + temp[i]);
                        }
        }
}
       

评分

参与人数 1技术分 +1 收起 理由
唐志兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 曹自祥 于 2012-10-25 14:15 编辑
  1. package pt;

  2. public class CountRubbit {

  3.         /**
  4.          * @param args
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 for(int i=1;i<10;i++){
  9.                         RubbitFamily rf=new RubbitFamily(i);
  10.                         System.out.println("第"+i+"年兔子家族一年大的兔子有:"+rf.getNum()[0]+"对");
  11.                         System.out.println("第"+i+"年兔子家族两年大的兔子有:"+rf.getNum()[1]+"对");
  12.                         System.out.println("第"+i+"年兔子家族成年的兔子有:"+rf.getNum()[2]+"对");
  13.                         System.out.println("第"+i+"年兔子家族总兔子数有:"+(rf.getNum()[0]+rf.getNum()[1]+rf.getNum()[2])+"对");
  14.                         System.out.println("---------------------------------------------");
  15.                 }
  16.         }
  17. }

  18. class RubbitFamily{
  19.         static int age=0;//家族年龄
  20.         static int num[]=new int[3];
  21.         
  22.         public static int getAge() {
  23.                 return age;
  24.         }

  25.         public static int[] getNum() {
  26.                 return num;
  27.         }


  28.         RubbitFamily(int year){
  29.             num[0]=0;//一年大兔子对数
  30.             num[1]=0;//两年大兔子对数
  31.             num[2]=0;//成年兔子对数
  32.                 age=year;
  33.                 for(int i=1;i<=age;i++){
  34.                         //第一年
  35.                         if(0<i&&i<2){
  36.                             num[0]=1;
  37.                         }
  38.                         //第二年
  39.                         else if(1<i&&i<3){
  40.                                 num[1]=num[0];
  41.                                 num[0]=0;
  42.                         }
  43.                         //三年以后
  44.                         else if(i>=3){
  45.                                 int k=num[0];
  46.                                 num[0]=num[1]+num[2];//去年两年大的和成年的兔子今年都生了一年大的兔子
  47.                                 num[2]+=num[1];//去年两年大的兔子今年都成年了
  48.                                 num[1]=k;//去年一年大的兔子今年都成长为两年大的兔子
  49.                                 }
  50.                         }
  51.                 }
  52.         }
复制代码
运行结果:
第1年兔子家族一年大的兔子有:1对
第1年兔子家族两年大的兔子有:0对
第1年兔子家族成年的兔子有:0对
第1年兔子家族总兔子数有:1对
---------------------------------------------
第2年兔子家族一年大的兔子有:0对
第2年兔子家族两年大的兔子有:1对
第2年兔子家族成年的兔子有:0对
第2年兔子家族总兔子数有:1对
---------------------------------------------
第3年兔子家族一年大的兔子有:1对
第3年兔子家族两年大的兔子有:0对
第3年兔子家族成年的兔子有:1对
第3年兔子家族总兔子数有:2对
---------------------------------------------
第4年兔子家族一年大的兔子有:1对
第4年兔子家族两年大的兔子有:1对
第4年兔子家族成年的兔子有:1对
第4年兔子家族总兔子数有:3对
---------------------------------------------
第5年兔子家族一年大的兔子有:2对
第5年兔子家族两年大的兔子有:1对
第5年兔子家族成年的兔子有:2对
第5年兔子家族总兔子数有:5对
---------------------------------------------
第6年兔子家族一年大的兔子有:3对
第6年兔子家族两年大的兔子有:2对
第6年兔子家族成年的兔子有:3对
第6年兔子家族总兔子数有:8对
---------------------------------------------
第7年兔子家族一年大的兔子有:5对
第7年兔子家族两年大的兔子有:3对
第7年兔子家族成年的兔子有:5对
第7年兔子家族总兔子数有:13对
---------------------------------------------
第8年兔子家族一年大的兔子有:8对
第8年兔子家族两年大的兔子有:5对
第8年兔子家族成年的兔子有:8对
第8年兔子家族总兔子数有:21对
---------------------------------------------
第9年兔子家族一年大的兔子有:13对
第9年兔子家族两年大的兔子有:8对
第9年兔子家族成年的兔子有:13对
第9年兔子家族总兔子数有:34对
---------------------------------------------

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
本帖最后由 谢军 于 2012-10-26 11:27 编辑

public class TuZi
{
public static void main(String[] args)
  {
int a=1,b=1,c,M=12;//12个月
  for(int i=3; i<=M; i++)
      {
     c=b;//c是 小兔子
      b=a+c;//兔子总和
      a=c;//a是大兔子
System.out.println("第"+i+"个月的兔子对数: "+b);
  }
}
}
研究了好久,关系有点复杂,我觉得应该是这个样子不知道对不对,到第三个月的时候也就是5月时,三月份的小兔子就变成的大兔子啦,然后变量c看作是小兔子,a是大兔子可以列出一个关系图  
月份      大兔子(a)   小兔子(c)       总和
3              1          +         1         =      2
4              1          +         2         =      3
5              2          +         3         =      5
6              3          +         5         =      8其中本月的大兔子数总是等于上个月的小兔子数所以有a=c。每个月的小兔子数总是等于上个月兔子的总和即c=b。每个月的总数=a+c。


评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1 很给力!

查看全部评分

回复 使用道具 举报
up_ 发表于 2012-10-25 12:00
class Rabbit{
        public static void main(String[] args){
                  int month_num=10;//暂定输出10个月的

谢谢你们的实例,我已经想出了自己的方法,有兴趣可以看下。
回复 使用道具 举报
谢军 发表于 2012-10-26 11:13
public class TuZi
{
public static void main(String[] args)

谢谢你们的实例,我已经想出了自己的方法,有兴趣可以看下。
回复 使用道具 举报
曹自祥 发表于 2012-10-25 14:05
运行结果:
第1年兔子家族一年大的兔子有:1对
第1年兔子家族两年大的兔子有:0对

谢谢你们的实例,我已经想出了自己的方法,有兴趣可以看下。
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 int midLife;
  3.                 int small = 0;
  4.                 int big = 1;
  5.                 int total;
  6.                 int month = 12;
  7.                 for (int i = 1; i <= month; i++) {
  8.                         if (i < 3) {
  9.                                 total = big;
  10.                                 System.out.println("第" + i + "月份兔子数量为:" + total + "对");
  11.                         }else {
  12.                                 midLife = small;
  13.                                 small = big;
  14.                                 total = big + small + midLife;
  15.                                 big +=midLife;
  16.                                 System.out.println("第" + i + "月份兔子数量为:" + total + "对");
  17.                         }
  18.                 }
  19.         }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马