题目描述:
            首先得先理解了这个题的意思,这个题的意思先是有一头母牛,然后这头母牛每一年生一头小牛,而小牛在出生的第四个年头也可以生下一头母牛,问第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);
                                              }
                        }


点赞(9)
 

0.0分

3 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 5 条评论

萌萌孟 5年前 回复TA
@C语言123 不对,好像是第一代小牛的小牛在第八年也能生孩子了,还要在加一
萌萌孟 5年前 回复TA
@C语言123 十八头是母牛生的和小牛生的,没有加上最初的老母牛,再加上老母牛就19了
C语言123 5年前 回复TA
第八年不是18头母牛吗?
沧浪 5年前 回复TA
@多么雷定 要可以多次输入
多么雷定 5年前 回复TA
我为什么没过啊

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;
	}
	

}