一生一世陪你


私信TA

用户名:wodeshijie

访问量:23434

签 名:

我要好好地写代码..........

等  级
排  名 428
经  验 4926
参赛次数 1
文章发表 19
年  龄 10
在职情况 学生
学  校 河南农业大学
专  业

  自我简介:

我就是我,可能不是太好,但是我就是我,谁也不能取代........

   题目描述:
            首先得先理解了这个题的意思,这个题的意思先是有一头母牛,然后这头母牛每一年生一头小牛,而小牛在出生的第四个年头也可以生下一头母牛,问第n年一共有多少头牛
            
   大致思路:
           在前四年的时候是毫无疑问只有一头母牛可以生牛,所以前4年的牛数是年数,
           可是到第五年的时候就有原来的一头老母牛和在第二年生的小母牛一起生两头牛了,
           所以第五年的时候就是6头牛了,
           到第六年的时候就有原来的一头老牛和第二年、第三年生的小母牛一起生三头牛了,再加上原           来的也就是前一年的牛头数一共有9头牛了
           到第七年的时候,现在的牛数就等于前一年的牛数也就是第六年的牛数(9头)加上新生的
           (老牛和第二、三、四年的小牛可以生四头),所以一共是13头牛
           规律如下: 年      牛
                      1       1
                      2       2
                      3       3
                      4       4
                      
                      5       6
                      6       9
                      7       13
                      8       19
             假设这是第n年,牛头数为发(n),从上面可以形象的看出如果n<=4时,f(n)=n;
             当n>4时,f(n)=f(n-1)+f(n-3)
      代码如下:
              import java.util.Scanner;
                public class Main {
                      public static void main(String[] args) {
                           Scanner m=new Scanner(System.in);
   
                               while(m.hasNext())
                                {
                                int n=m.nextInt();
                                   if(n==0)
                                       break;
                                    else
                                     if(n<=4)
                                       System.out.println(f(n));
                                     else
                                       System.out.println(f(n-1)+f(n-3));            
                                   }
                          }
                      public static int f(int n) {
                       if(n<=4)
                         return n;
                       else
                          return f(n-1)+f(n-3);
                                              }
                        }


 

0.0分

6 人评分

  评论区

第八年不是18头母牛吗?
2019-09-14 09:04:49
我为什么没过啊

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num=sc.nextInt();
		num=s(num);
		System.out.println(num);
	}
	
	public static int s(int i) {
		if(i==1) return 1;
		else if(i==2) return 2;
		else if(i==3) return 3;
		else if(i>0) return s(i-1)+s(i-3);
		else return 0;
	}
	

}
2019-03-05 08:55:57
  • «
  • 1
  • »