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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 田磊阳   /  2013-4-9 23:41  /  7179 人查看  /  90 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Asan 中级黑马 2013-4-10 01:15:30
21#
  1. package cn.learn.test;

  2. public class Test {

  3.         public static int count = 0;  // 初始化牛开始为0头
  4.         public static int n = 10;     // 初始化一共多少年,可以写的深一点可以写成用户输入年数

  5.         // 构造方法
  6.         public Test(int year) {
  7.                 // 每调用一次构造方法,牛的数量 +1;
  8.                 count++;
  9.                 // 每四年调用一次Test()方法
  10.                 for (int i = 3 + year; i <= n; i++) {
  11.                         new Test(i);
  12.                 }
  13.         }

  14.         public static void main(String[] args) {
  15.                 // 调用构造方法并初始化从0开始
  16.                 new Test(0);
  17.                 // 打印 n+" 年之后一共有  "+count+" 头牛"
  18.                 System.out.println(n + " 年之后一共有  " + count + " 头牛");
  19.         }
  20. }
复制代码

点评

结果正确···  发表于 2013-4-14 20:30

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
  1. import java.util.Scanner;//引入扫描类
  2. class  Cow
  3. {
  4.         public static int count=0;//全局共享计数变量

  5.         public Cow(int year,int m)//year:当前年数 m:要计算的截止年数
  6.         {
  7.                 count++;//+1头
  8.                
  9.                 for(int i=3+year;i<=m;i++)
  10.                 {
  11.                         new Cow(i,m);//递归创建牛对象
  12.                 }
  13.         }
  14.         public static void main(String[] args)
  15.         {
  16.                 System.out.println("一个农夫养了一头牛,三年后,这头牛每一年会生出1头牛,"+
  17.                         "生出来的牛三年后,又可以每年生出一头牛……"+"\n要计算n年后有多少头,");

  18.                 int temp=0;

  19.                 while(temp>=0)//循环输入,当输入-1时跳出输入循环
  20.                 {
  21.                         System.out.println("请输入数字按(enter结束输入),当输入-1的时候退出程序:");

  22.                         temp=new Scanner(System.in).nextInt();/*用输入对象System.in初始化创建扫描类对象,并调用
  23.                                                                                                         该对象读取方法读取扫描流的一个数据存入截止年份变量temp中
  24.                                                                                                         */

  25.                         if(temp==-1)//当输入-1的时候跳出输入循环的判断
  26.                                 break;

  27.                         new Cow(0,temp);//创建一头牛对象,初始年份为0,计算截止年份为temp
  28.                         System.out.println(temp+"年后共有"+count+"头牛");

  29.                         count=0;//计数清0
  30.                 }
  31.                 System.out.println("谢谢使用,再见!");
  32.         }
  33. }
复制代码

QQ截图20130410013524.png (8.91 KB, 下载次数: 46)

QQ截图20130410013524.png

点评

完全正确  发表于 2013-4-14 20:31

评分

参与人数 1技术分 +4 收起 理由
田磊阳 + 4

查看全部评分

回复 使用道具 举报
public class Test_niu {

        /**
         * @param args
         */
       
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                aaa(10);
        }
        public static void aaa(int n)
        {
                int[] Count={1,0,0};  //Count[0] 1年的牛    Count[1] 2年的牛    Count[2] 3年的牛
                int temp=0;
                for(int i=1;i<=n;i++)//因为该代码中没有0年的牛,所以从1年开始值
                {
                        temp=Count[2];   //该年中新出生的牛
                        Count[2]=Count[2]+Count[1];   //该年中成为3年的牛
                        Count[1]=Count[0];  //该年中成为2年的牛
                        Count[0]=temp;   //该年中成为1年的牛
                        System.out.println("第"+i+"年"+(Count[0]+Count[1]+Count[2])+"头牛");
                }
        }
}
       

点评

嗯,一到十年的全部打印了  发表于 2013-4-14 20:32

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
  1. /*
  2. 一个农夫养了一头牛,三年后,这头牛每一年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……问农夫10年后有多少头牛?n年呢?(不考虑其他因素,只考虑此数学问题)
  3. */

  4. import java.util.*;
  5. class Run
  6. {
  7.        
  8.         public static int year=0;                                        //定义静态数据,年,被所有人共享.            
  9.         public static void main(String[] args)
  10.         {
  11.                 final int N=10;                         // 设定N年后计算牛数量.
  12.                
  13.                 ArrayList<Niu> al = new ArrayList<Niu>();//用ArrayList容器存放出生的牛,泛型数据为Niu类.
  14.                 al.add(new Niu(year,al));                                //第一头牛存入ArrayList.
  15.                 for(;year<=N;)                                                        //创建循环.
  16.                 {                                                                                               
  17.                         int x;                                                                //创建一个计数器.
  18.                         for(x=0;x<al.size();x++)                //遍历容器.
  19.                         {
  20.                                 Niu niu = al.get(x);                //创建一个牛类引用接受遍历对象.
  21.                                 niu.shengNiu();                                        //遍历调用牛类中 生牛方法.
  22.                         }
  23.                         year++;                                                                //本年结束,下一年开始.

  24.                         /*先计算当前年下,遍历所有牛,有资格生牛的(年龄大于等于3岁),就会生牛,全部遍历完
  25.                         成后再开始新一年.
  26.                         */
  27.                 }

  28.                 System.out.println(N+"年后有牛"+al.size()+"只");


  29.         }

  30.        
  31. }


  32. class Niu
  33. {
  34.         private int age;                //新生小牛年龄.
  35.         private int date;                //新生小牛出生的年.
  36.         private ArrayList al;        //创建ArrayList 类型引用型变量.
  37.         Niu(int year,ArrayList al)//构造函数.
  38.         {
  39.                 date=year;                        //当前年赋给出生年.
  40.                 this.al=al;                       
  41.         }
  42.        
  43.         public void shengNiu()        //生娃方法.
  44.         {
  45.                 age=Run.year-date;  //计算牛的年龄.当前年减去出生年.
  46.                 if (age>=3)
  47.                 {
  48.                        
  49.                         al.add(new Niu(Run.year,al));
  50.                         /*
  51.                         哈哈3岁了可以生娃了.创建一个新的Niu类对象生娃存入容器中.
  52.                         */
  53.                 }
  54.         }

  55. }
复制代码

点评

回答正确·····解释很幽默  发表于 2013-4-14 20:34

评分

参与人数 1技术分 +4 收起 理由
田磊阳 + 4

查看全部评分

回复 使用道具 举报
斑竹威武,这个处理的办法的确很强大,防止了灌水以及抄袭的现象,而且为了不让大家能在网上找到答案,还修改了题目,虽然改的有点吊炸天,一头牛三年后怎么生的,他自交了?
  1. import java.util.ArrayList;
  2. import java.util.List;


  3. public class Cattle {

  4. private int age = 0;

  5. /**
  6. * 一年之后发生的事情,首先牛的age肯定是要加 1 ,如果牛满 3岁,需要往牛棚里面再加一头新牛
  7. * @param cattles 牛棚,存放所有牛的List
  8. * @return 变化后的牛棚
  9. */
  10. public List<Cattle> oneYearLater(List<Cattle> cattles){

  11. this.age++;

  12. if(age >= 3){
  13. cattles.add(new Cattle());
  14. }

  15. return cattles;
  16. }

  17. public static void main(String[] args) {


  18. List<Cattle> cattles = new ArrayList<Cattle>();//牛棚在此
  19. cattles.add(new Cattle());// 最开始牛棚里面的一头寂寞的牛,由于某种莫名的原因,三年后他靠自己生崽了!自交?

  20. for (int i = 0; i < 10; i++) {//前10年

  21. for (int j = 0; j < cattles.size(); j++) {
  22. cattles = cattles.get(j).oneYearLater(cattles);
  23. }

  24. System.out.println("第一年牛棚里面有 " + cattles.size() + " 头牛");
  25. }


  26. }
  27. }
复制代码


点评

注释很好,代码书写要有缩进就好了,答案不正确哦  发表于 2013-4-14 20:36

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2

查看全部评分

回复 使用道具 举报
  1. import java.util.*;
  2. public class Cow
  3. {
  4.         private int age;  //定义牛的年龄
  5.         public Cow()
  6.         {
  7.                 age = 0;        //初始化的时候,牛为0岁
  8.         }
  9.         public Cow birth()
  10.         {
  11.                 age ++;
  12.                 return age > 3 ? new Cow():null;//判断:牛的年龄是否>3,如果>3则具备生牛的条件,不具备则不生牛。
  13.         }

  14.         public static void main(String[] args)
  15.         {
  16.                 ArrayList<Cow> list = new ArrayList<Cow>();//创建一个数组,将该数组视为牛圈。
  17.                 list.add(new Cow());//往牛圈中放入一头牛
  18.                 for(int i = 0; i <= 10;i++)//i为年份 初始i=0为第一年,i=1的时候为1年后。
  19.                         {
  20.                         for(int j =0;j<list.size();j++)//j为每年圈中牛的数量
  21.                                 {
  22.                                         Cow cow = list.get(j).birth();
  23.                                         if(cow != null)
  24.                                         list.add(cow);
  25.                                 }
  26.                         }
  27.                 System.out.println("10年后,共有:" + list.size()+"头牛。");
  28.         }
  29. }
复制代码
打印结果:10年后,共有28头牛。

如果求n年  把for(int i = 0; i <= 10;i++)中的10改成n即可。

评分

参与人数 1技术分 +4 收起 理由
田磊阳 + 4

查看全部评分

回复 使用道具 举报
本帖最后由 李罡 于 2013-4-10 03:22 编辑

第一种方法为:
  1. package cn.itcast.testcow;

  2. /*
  3. * 看到这个题时,第一反应就是用数学来做。
  4. * 第1到10年的牛的数量分别为:1,1,2,3,4,6,9,13,19.。。
  5. * 归纳可以看出,从第4年开始,每年的牛的数量等于上一年的牛的数量加上前3年的牛的数量,即:3=2+1,4=3+1,6=4+2...
  6. * 即cowArr[i]=cowArr[i-1]+cowArr[i-3](i>=3)
  7. * */
  8. class Cow{   

  9.         public static void main(String[] args)  
  10.         {      
  11.                 long startTime = System.currentTimeMillis();
  12.                 //定义一个年数,要得到n年后,则把year设为n即可
  13.                 int year = 10;
  14.                 //定义一个数组来存放不同年牛的数量
  15.                 int[] cowArr = new int[year];
  16.                 //设置前3年的牛的数量,因为i>=3.
  17.                 cowArr[0]=cowArr[1]=1;
  18.                 cowArr[2]=2;
  19.                 for(int i=3;i<year ;i++){
  20.                         //每年的牛的数量等于上一年的牛的数量加上前3年的牛的数量
  21.                         cowArr[i] = cowArr[i-1]+cowArr[i-3];
  22.                 }
  23.                 long endTime = System.currentTimeMillis();
  24.                 //可以取到第1年到第n年任意年的牛的数量,cowArr[x],x<year-1
  25.                 System.out.println(year+"年后将会有"+cowArr[year-1]+"头牛");
  26.                 System.out.println("数组方式耗时"+(endTime - startTime)+"毫秒");

  27.         }
  28. }
  29. /*
  30. 输出为:
  31. 10年后将会有28头牛
  32. 数组方式耗时0毫秒
  33. */
复制代码
第二种方法为:
  1. <p>package cn.itcast.testcow;</p><p>import java.util.ArrayList;
  2. import java.util.List;
  3. /*
  4. * 用面向对象
  5. * */
  6. public class Cow1 {
  7. //牛刚生下来年龄为0~~
  8. private int age=0;
  9. //生个宝宝
  10. public Cow1 creatCow(){
  11.   //一年加一岁
  12.   age++;
  13.   //到3岁了,可以生了
  14.   return (age>=3)?new Cow1():null;
  15. }
  16. public static void main(String[] args) {
  17.   // TODO Auto-generated method stub
  18.   long startTime = System.currentTimeMillis();
  19.   //若为n年后则设置为n
  20.   int year = 10;
  21.   //定义一个集合来存放牛,因为长度是可变的。
  22.   List<Cow1> cowList = new ArrayList<Cow1>();
  23.   //刚开始有一头牛
  24.   cowList.add(new Cow1());
  25.   //每年判断一次
  26.   for(int i = 1 ;i<=year ;i++){
  27.    int number = cowList.size();
  28.    if(number!=0){
  29.    //把每头牛都取出来看看,若它到3岁了则往集合里增加一头牛
  30.    for(int j = 0; j<number ;j++){
  31.     Cow1 cow = cowList.get(j);
  32.     if(cow.creatCow()!=null)
  33.      //增加一头牛
  34.      cowList.add(new Cow1());
  35.    }
  36.    }
  37.   }
  38.   long endTime = System.currentTimeMillis();
  39.   System.out.println(year+"年将会有"+cowList.size()+"头牛");
  40.   System.out.println("集合方式耗时"+(endTime - startTime)+"毫秒");
  41. }</p><p>}
  42. /*
  43. 输出为:
  44. 10年将会有28头牛
  45. 集合方式耗时0毫秒
  46. */</p>
复制代码
算一算运行时间
设置year为40.
第一种方法:

第二种方法:

所以用数组效率更高!
当把year设置为50时,用第一种方法计算出的将会有122106097头牛,消耗的时间仍然为0.
而用第二种方式时,会出现异常:java.lang.OutOfMemoryError: Java heap space
这是因为对象太多了集合里装不了,会报出堆内存溢出异常!
而用数组则只是产生一个长度为50的数组并为里面的元素赋值,所以毫无压力!
当year为100时:100年后将会有24382819596721629头牛
数组方式耗时0毫秒(要把数组类型改为long)
所以用第一种方式更优。

QQ截图20130410025342.png (1.65 KB, 下载次数: 33)

第一种方式

第一种方式

QQ截图20130410025446.png (2.85 KB, 下载次数: 41)

第二种方式

第二种方式

点评

含额外加分  发表于 2013-4-14 20:38
非常棒···  发表于 2013-4-14 20:37

评分

参与人数 2技术分 +5 黑马币 +1 收起 理由
杜鹏飞 + 1 只根绝归纳是会得出错误答案的,要循环n+1次.
田磊阳 + 5

查看全部评分

回复 使用道具 举报
此题,我暂只能提供两种计算方法,大同小异,方法一用的是循环,方法二用的是Math类的数学方法。能力有限,如阳哥有纯面向对象的方法或优化方法,请贴在回复上,以便于我学习。谢谢阳哥!{:soso_e163:}
方法一:
class Cow {//定义牛类
        int num ;//农夫养牛的数量
        int year;//农夫养牛的时间
       
        Cow (int start) {//构造函数,指定初始牛数量
                num = start;
        }
       
        public int count (int year) {//该方法计算year年后,牛的数量
                this.year = year;
                for(int i=1;i<=year;i++) {//方法一:用循环方法
                        if(i%3==0)//每三年,让num值增一倍
                        num *= 2;
                }
                return num;
        }
}

class CountCow {//单独计算一个牛数量的类
        public static void main(String[] args) {
                Cow c = new Cow(1);//构造函数对牛数量进行初始化
                c.count(10);//调用count方法计算10年后牛的数量,
                System.out.println(c.year + "年后,牛的总数为:" + c.num);//打印输出结果,输出内容比较人性化哦。
        }
}

方法二:

class Cow {//定义牛类
        int num ;//农夫养牛的数量
        int year;//农夫养牛的时间
       
        Cow (int start) {//构造函数,指定初始牛数量
                num = start;
        }
       
        public double count (int year) {//该方法计算year年后,牛的数量
                this.year = year;
                num = num *(int) Math.pow(2,year/3);//用了java.lang包里的Math类的求幂方法。
                return num;
        }
}

class CountCow {//单独计算一个牛数量的类
        public static void main(String[] args) {
                Cow c = new Cow(1);//构造函数对牛数量进行初始化
                c.count(10);//调用count方法计算10年后牛的数量,
                System.out.println(c.year + "年后,牛的总数为:" + c.num);//打印输出结果,输出内容比较人性化哦。
        }
}

点评

代码需要改进,可参考他人的  发表于 2013-4-14 20:41

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2

查看全部评分

回复 使用道具 举报
看看.....
回复 使用道具 举报
  1. /*
  2. 这道题的原型是斐波那契数列。
  3. 斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。

  4. 分析:
  5. 牛在出生两年后,就有繁殖能力,一头牛每年能生出一头小牛来。如果所有牛都不死,那么一年以后可以繁殖多少头牛?
  6. 我们不妨拿新出生的一头小牛分析一下:
  7. 第一年小牛没有繁殖能力,所以还是一头
  8. 两年后,生下一头小牛总数共有两头
  9. 三年以后,老牛又生下一头,因为小牛还没有繁殖能力,所以一共是三头
  10. 。。。

  11. */


  12. public class Fibonacci {                                                //开始构造斐波那契数列
  13.         public static void main(String[] args) {
  14.                 int x = 1, y = 1;                                                //这是初始状态
  15.                 System.out.println(x);
  16.                 for (int i = 1; i <= 10; i++) {                        //这里的10就是十年,想知道n年改数字就行
  17.                         System.out.println(y);                             //输出的是第i年的头数
  18.                         y = x + y;
  19.                         x = y - x;
  20.                 }
  21.         }
  22. }
复制代码

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3 答案不正确哦

查看全部评分

回复 使用道具 举报
  1. package com.qdzks.day1;

  2. public class Test1 {
  3.         /*
  4.          * 题目:一个农夫养了一头牛,三年后,这头牛每一年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……
  5.          * 问农夫10年后有多少头牛?n年呢?(不考虑其他因素,只考虑此数学问题)
  6.          * */
  7. }
  8. //1.运用递归的方法做
  9. class Cow1 {
  10.         static int count = 1;
  11.         private static void feedCow(int year,int age){
  12.                 year++;
  13.                 age++;
  14.                 //(结果为28,如果要算n年后的结果,只需将10改为n):
  15.                 if(year<=10){
  16.                         if(age>=3){
  17.                                 count++;
  18.                                 feedCow(year,0);
  19.                         }
  20.                         feedCow(year,age);
  21.                 }
  22.         }

  23.         public static void main(String[] args) {
  24.                 new Cow1().feedCow(0, 0);
  25.                 System.out.println(count);
  26.         }
  27. }
  28. //方法2:面向对象的思路
  29. //结果是28,要求n年后,只需将i<10改为i< p>
  30. class Cow2 {
  31.         public static int count = 0;
  32.         public Cow2(int year){
  33.                 count++;
  34.                 for(int i=3+year;i<=10;i++){
  35.                         new Cow2(i);
  36.                 }
  37.         }

  38.         public static void main(String[] args) {
  39.                 new Cow2(0);
  40.                 System.out.println(count);
  41.         }
  42. }
复制代码

点评

加上自己的一些思路和注释  发表于 2013-4-14 20:42

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
  1. class ShuNiu
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 cowNum(10);
  6.         }
  7.         public static void cowNum(int N)//传入年数,打印该年有多少头牛
  8.         {
  9.                 if (N==1)
  10.                 {
  11.                         System.out.println("第1年的牛数:  1");
  12.                         return;
  13.                 }
  14.                 if (N==2)
  15.                 {
  16.                         System.out.println("第2年的牛数:  1");
  17.                         return;
  18.                 }
  19.                 int f1 = 1, f2 = 1, f;
  20.                 for(int i=3; i<=N; i++)
  21.                         {
  22.                            f = f2;
  23.                            f2 = f1 + f2;
  24.                            f1 = f;
  25.                         //这是数学规律的代码实现,用循环来算出第几年的牛数量
  26.                         //每循环一次,其实就是年数就+1;
  27.                         }
  28.                 System.out.println("第" + N +"年的牛数: "+f2);
  29.         }
  30. }
复制代码

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
本帖最后由 刘胜寒 于 2013-4-10 11:26 编辑

class Main {

        public static void main(String[] args) {
            Scanner cin = new Scanner(System.in);
                long[] ans = new long[40];//这个东西跑到五十年的时候就差不多内存溢出了 RunTime异常了 所以定义了40
            ans[1] = ans[2] = 1;
            for(int i=3;i<40;i++)
                    ans = ans[i-1] + ans[i-2];
            while(cin.hasNext())
            {

            int Year = cin.nextInt();// 年份
            if(Year>=40) {System.out.println("哥们  年数 大于40了");
            continue;
            }
            System.out.println(ans[Year]); //那一年有多少头年
            }

        }
/*
       年份         1        2        3        4        5        6        7        8        9
3年的老牛        0        0        1        1        2        3        5        8        13
2年的牛          0        1        0        1        1        2        3        5        5
1年的新牛       1        0        1        1        2        3        5        5        13
        斐波拉契数列 我是来混分的   



个人建议不要使用递归  耗时 很大 。
用for比较爽很快。
如果非要用递归建议使用记忆化递归, 节省时间

  */   
}

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2

查看全部评分

回复 使用道具 举报
  1. //fibonacci数列问题
  2. //递归较耗时,但是本人新手目前只会用递归。。
  3. import java.util.Scanner;
  4. public class Main
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 Scanner sc = new Scanner(System.in);
  9.                 while(sc.hasNext())
  10.                 {
  11.                         int n = sc.nextInt();
  12.                         System.out.println(fibonacci(n));
  13.                 }
  14.         }
  15.         public static long fibonacci(int n)
  16.         {
  17.                 if(n<=2)
  18.                         return 1;
  19.                 else
  20.                         return fibonacci(n-1)+fibonacci(n-2);
  21.         }
  22. }
复制代码

评分

参与人数 1技术分 +2 收起 理由
田磊阳 + 2

查看全部评分

回复 使用道具 举报
具体思路  见思路
CODE :

  1. public class test {
  2.         static int count = 1;// 初始牛数
  3.         private void Sum(int year, int age) {
  4.                 year++;//第N年
  5.                 age++;//年龄
  6.                 if (year <= 10) {
  7.                         if (age >= 3) {
  8.                                 count++;
  9.                                 Sum(year, 0);
  10.                         }
  11.                         Sum(year, age);
  12.                 }
  13.         }
  14.         public static void main(String[] args) {
  15.                 new test().Sum(0, 0);
  16.                 System.out.println(count);
  17.         }
  18. }
复制代码

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
本帖最后由 黑马王双 于 2013-4-13 12:05 编辑

//以第一头牛为主,每年增加一岁,第三年开始每年生一头小牛//每三年重复一次第一头的牛的动作
public class Cow
{
         static int count= 1;
        private staticvoid feedCow(int year,int age)
        {
                year++;
                age++;
                if(year<=10)
                {
                        if(age>=3)
                        {
                                count++;
                                //当age=3的时候,第二头牛的年龄为1,重新调用第一头牛的动作,以此类推            
                                feedCow(year,0);
                        }
                        feedCow(year,age);
                }
        }
        public staticvoid main(String[] args)
        {
                new Cow().feedCow(0, 0);
                System.out.println(count);
        }
}
n年的时候,将10替换为n即可。

评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报

import java.util.Scanner;

public class Cow {
        static int count = 1;
        static int year;

        // 设置年数
        public void setYear(int year) {
                Cow.year = year;
                CowCount(0, 0);
        }

        // 递归方法
        private static void CowCount(int i, int j) {
                i++;//年数
                j++;//牛的年龄
                if (i <= Cow.year) {
                        if (j >= 3) {
                                count++;
                                CowCount(i, 0);
                        }
                        CowCount(i, j);
                }
        }

        public static void main(String[] args) {
                Scanner s = new Scanner(System.in);
                System.out.print("请输入需要查询的年数: ");
                int year = s.nextInt();
                new Cow().setYear(year);
                System.out.println(year + "年后牛的数量为: " + count);
        }
}


评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
我的答案
回复 使用道具 举报
本帖最后由 彭波 于 2013-4-10 12:25 编辑

Cow.rar (626 Bytes, 下载次数: 2)

我的答案(权限是仅版主可见)
怎么设置“仅作者可见啊”????


评分

参与人数 1技术分 +3 收起 理由
田磊阳 + 3

查看全部评分

回复 使用道具 举报
本帖最后由 陈宇鹏 于 2013-4-10 12:41 编辑

首先,我象声明一下。以下代码是我从百度上找的
我确确实实不会这题,甚至不知道应该怎么去思考
但是还是来发帖的原因是  请求楼主给我一个这道题的思路。
请不要加分,但是麻烦也不要扣分,拜托
希望楼主可以给我指点一下。下面这段代码为什么这么写。每一句的思路是啥。
拜托了
第一个 百度上说是递归的
  1.    public class Cow {
  2.         static int count = 1;
  3.         private static void feedCow(int year,int age){
  4.             year++;
  5.             age++;
  6.             if(year<=30){
  7.                 if(age>=3){
  8.                     count++;
  9.                     feedCow(year,0);
  10.                 }
  11.                 feedCow(year,age);
  12.             }
  13.         }
  14.      
  15.         public static void main(String[] args) {
  16.             new Cow().feedCow(0, 0);
  17.             System.out.println(count);
  18.         }
  19.     }
复制代码
第二个是面向对象的
  1. public class Cow {
  2.         public static int count = 0;
  3.         public Cow(int year){
  4.             count++;
  5.             for(int i=3+year;i<=10;i++){
  6.                 new Cow(i);
  7.             }
  8.         }
  9.      
  10.         public static void main(String[] args) {
  11.             new Cow(0);
  12.             System.out.println(count);
  13.         }
  14.     }
复制代码
拜托拜托,希望楼主能给我讲讲~~~~

最后。。。。请不要加分,拜托也不要扣分

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

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