原题链接:[递归]母牛的故事
| 第?年 | 1岁牛 | 2岁牛 | 3岁牛 | 4岁牛 | 牛的总数 |
| 1 | 0 | 0 | 0 | 1 | 1 |
| 2 | 1 | 0 | 0 | 1 | 2 |
| 3 | 1 | 1 | 0 | 1 | 3 |
| 4 | 1 | 1 | 1 | 1 | 4 |
| 5 | 2 | 1 | 1 | 2 | 6 |
| 6 | 3 | 2 | 1 | 3 | 9 |
| 7 | 4 | 2 | 3 | 4 | 13 |
仔细一看,发现与斐波拉契数列相似。
第n年的牛的数量总数第n-1年牛的数量+第n-3年牛的数量(n>=4)
所以建立个数组就行,代码如下
0.0分
8 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
public class Main { public int count = 0; public void born(int sheepSum,int n,int year) { if (n > 4) { sheepSum++; } if (n <= year) { this.count = this.count + sheepSum; born(sheepSum,n+1,year); } } public static void main(String[] args) { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); int n = input.nextInt(); while(n != 0) { Main main = new Main(); main.born(1,1,n); System.out.println(main.count); n = input.nextInt(); } } } 为什么错了一半的数据??import java.util.Scanner; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { int a=in.nextInt(); if (a==0) { break; } else if (a<=4) { System.out.println(a); } else { int b =a; for (int i = 1; i <= a-4; i++) { b+=i; } System.out.println(b); } } } } 我这个出什么问题了