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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ╄Tracyぺ 中级黑马   /  2014-7-11 22:29  /  1920 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ╄Tracyぺ 于 2014-7-15 23:52 编辑

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

15 个回复

倒序浏览
//这是一个菲波拉契数列问题
回复 使用道具 举报
:lol度娘告诉你~~
回复 使用道具 举报
   public class lianxi01{   public static void main (String args[])   {   System.out.println("第一个月的兔子对数:1");   System.out.println("第二个月的兔子对数:1");   int f1=1,f2=1,f,m=24;   for (int i=3;i<=m;i++){  f=f2; f2=f1+f2; f1=f;  System.out.println("第"+i+"个月的兔子对数:"+f2)} }  }
回复 使用道具 举报
class Demo1
{
        public static void main(String[] args)
        {
                int month = -1;                                                                //定义一个变量month来存储月份
                System.out.println("兔子的总数为"+rabbit(month));
        }
        public static long rabbit(int month){                //计算兔子总数的函数
                if (month>=0)
                {
                                switch (month)                                                //switch判断month,因为month是在整型,有具体的值。用swtich比较方便。
                        {
                        case 0 :
                                return 0;                                                               
                        case 1 :
                                return 1;
                        default :
                                return rabbit(month - 1)+rabbit(month -2);
                        }
                }else{
                        System.out.println("输入错误啊。");
                        return 0;
                }
        }
}
回复 使用道具 举报
zippo 发表于 2014-7-11 23:21
class Demo1
{
        public static void main(String[] args)

兔子的规律为数列为什么是1,1,2,3,5,8,13,21....
回复 使用道具 举报
玉遥 中级黑马 2014-7-12 22:55:13
7#
这个用递归最好:
   规律是第三个月以后当前月的对数是前两个月对数的和。
方式1:for循环方式

  1. <P>class Tu{
  2.         public static void main(String[] args){
  3.                 System.out.println(tu(12));//计算12个月的对数
  4.         }
  5.         public static int tu(int n){
  6.                  int x=1;//第一个月的对数
  7.                  int y=1; //第二个月的对数
  8.                  int sum=0;//记录n个月的对数
  9.                  int z;//中转变量

  10.        for (int i = 3; i <= n; i++) {
  11.        sum=x+y;//假设求第三个月的对数,就是第一个月加第二个月
  12.        z=y;//当求第四个月对数时,就是sum+第二个月对数也就是y,先用z记录现在的y
  13.        y=sum;//再将第三个月的对数赋值给y
  14.        x=z; //再将z记录的y赋值给x,现在的x就相当于第二个月的对数,依次推下去就是
  15.        } </P>
  16. <P>       return sum;</P>
  17. <P>}</P>
复制代码
方式2:递归方式,更简单

  1. <P>           int sum=0;</P>
  2. <P>           if (n==1) {
  3.                   return 1;//第一个月的对数
  4.            }else if (n==2) {
  5.                   return 1;//第二个月的对数
  6.            }else{
  7.                   sum=tu(n-1)+tu(n-2);//从第三个月开始是前两个月对数的和
  8.            }
  9.            return sum;
  10.     }
  11. }</P>
复制代码

看看,看得懂吗?

         
回复 使用道具 举报
╄Tracyぺ 发表于 2014-7-12 22:38
兔子的规律为数列为什么是1,1,2,3,5,8,13,21....

懂了~三克油
回复 使用道具 举报
玉遥 发表于 2014-7-12 22:55
这个用递归最好:
   规律是第三个月以后当前月的对数是前两个月对数的和。
方式1:for循环方式方式2:递归 ...

嗯,可以的
回复 使用道具 举报
玉遥 发表于 2014-7-12 22:55
这个用递归最好:
   规律是第三个月以后当前月的对数是前两个月对数的和。
方式1:for循环方式方式2:递归 ...

怎么让我提高技术分呀
回复 使用道具 举报
斐波那契数列,和C语言的编程都差不多
回复 使用道具 举报
ACM做过这题 !!
回复 使用道具 举报
学习了,学习了
回复 使用道具 举报
zippo 中级黑马 2014-7-17 23:16:13
14#
╄Tracyぺ 发表于 2014-7-12 22:38
兔子的规律为数列为什么是1,1,2,3,5,8,13,21....

可以推测,第一个月是一对,第二个月也是一对,第三个月也是生了一对的话就是两队了,然后第四个月又生一对就是3对了,可以这样一直推下去,这是著名的斐波那契数列
回复 使用道具 举报
本帖最后由 xwh1230 于 2014-7-17 23:53 编辑

                月份   兔子个数                                                1        1                             
                3        2            
                6        4               
                9        8               
                12        16
import java.lang.Math; class  Demo4 {     
    public static void main(String[] args)          {                  
                               int i = 10;       //假设是10个月,也可以随意输入一个数     
                               int sum = (int)Math.pow(2,i/3);        //sum就是兔子的总数
                               System.out.println(sum);         }
    }



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