[递归]母牛的故事
题目描述
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
输入格式
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。
输出格式
对于每个测试实例,输出在第n年的时候的母牛数量。
每个输出占一行。
样例输入
2
4
5
0
样例输出
2
4
6
题解思想
采用递归的方法来解决,Cn表示当前的年份的母牛的数量,Cn-1表示前面的母牛数量
假设所有的牛都产下一只母牛,当前年份的母牛数量翻倍,但是母牛年份未满4年的母牛并没有产下母牛,所以应该减去那部分的母牛。
所有Cn=2Cn-1-(Cn-1-Cn-2)-(Cn-2-Cn-3)=Cn-1+Cn-3*
代码
import java.util.Scanner;
public class Main {
//记录输入的数据
public int[] years=new int[10];
//记录所有牛的数量
public int sum=0;
//记录每年新增的牛的数
public static void main(String[] args) {
Main main = new Main();
Scanner scanner = new Scanner(System.in);
int count=0;
//记录输入的数据
while (scanner.hasNext()) {
int num= scanner.nextInt();
if(num==0)break;
main.years[count++]=num;
}
scanner.close();
for(int i=0; i<count; i++) {
main.sum=main.fun(main.years[i]);
System.out.println(main.sum);
}
}
//递归计算
public int fun(int year){
if(year==1) return 1;
else if(year==2) return 2;
else if (year==3) return 3;
else{
return fun(year-1)+fun(year-3);
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理