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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李培根 金牌黑马   /  2012-12-10 10:22  /  1899 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 李培根 于 2012-12-12 19:09 编辑

【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一
对兔子,假如兔子都不死,问每个月的兔子总数为多少?

百撕不得骑姐,求帮助

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

6 个回复

倒序浏览
用指数应该可以 以2为底数 已月份/3为指数 正好可以得出对数 你试试  
如 1月 2^(1/3)=2^0=1
     2月 2^(2/3)=2^0=1
     3月 2^(3/3)=2^1=2
     4月 2^(4/3)=2^1=2
       .....
     
回复 使用道具 举报

六个月兔子的对数是1,2,3,5,8,13。很容易发现这个数列的特点:即从第三项起,每一项都等于前两项之和。所以按这个规律写下去,便可得出一年内兔子繁殖的对数:1,2,3,5,8,13,21,34,55,89,144,233。可见一年内兔子共有233对。
public static void main(String[] args) {
  long f1, f2;
  int i;
  f1 = f2 = 1;
  for (i = 1; i <= 20; i++) {
   System.out.println( f1 + "," + f2);
   if (i % 2 == 0)
    System.out.println("\n");/* 控制输出,每行四个 */
   f1 = f1 + f2; /* 前两个月加起来赋值给第三个月 */
   f2 = f1 + f2; /* 前两个月加起来赋值给第三个月 */
  }
}
回复 使用道具 举报
这是一道典型的递推算法设计问题:
一,问题分析:寻找问题的规律性,本题可采用枚举法。
月    份:1月       2月       3月       4月       5月          6月        ......
兔子对数:1               1            1+1=2      2+1=3    3+2=5         5+3=8          ......
二,数学建模:若设x表示兔子数,则X(1)=X(2)=1,X(n)=x(n-1)+X(n-2),其中n=3,4,5,6......很快就会发现这其实是著名的裴波那契数列。
三,算法设计:(可以用不同方法,这里给出一个供参考)
1,选用数据结构:因为要保存每个月兔子的对数,所以选用数组数据结构。
2,程序如下:(java)
/*
因数组长度必须是常量,所以本程序只能求前100个月内的每个月的兔子总数,可根据需要自行调整数组长度
*/
public  class  NumOfRubbits{
  public  static void main(String[] args)
   {
        int [] num=new int [100];
        num[1]=num[2]=1;
        //计算
        for(n=3;n<100;n++)
        {
              num[n]=num[n-1]+num[n-2];
        }
        //输出
      for(i=1;i<100;i++)
        {
              System.out.println("第"+i+"个月兔子总数共有"+num[i]+"对!");
        }
   }
}
回复 使用道具 举报
斐波那契数列嘛。。
回复 使用道具 举报
这是一个典型的斐波那契数列即黄金分割数列。

斐波那契数列.PNG (7.05 KB, 下载次数: 32)

黄金分割数列图解

黄金分割数列图解

评分

参与人数 1技术分 +1 黑马币 +8 收起 理由
李培根 + 1 + 8 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马