原题链接:[递归]母牛的故事
题目描述:
首先得先理解了这个题的意思,这个题的意思先是有一头母牛,然后这头母牛每一年生一头小牛,而小牛在出生的第四个年头也可以生下一头母牛,问第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分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
我为什么没过啊 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; } }