递归处理母牛繁殖问题

有一个农场在第一年的时候买了一头刚出生牛,这头牛在第四年的时候就能生一头小牛,以后每年这头牛就会生一头小牛。这些小牛成长到第四牛又会生小牛,以后每年同样会生一头牛,假设牛不死,如此反复。请问50年后,这个农场会有多少头牛?(可选择自己熟悉的编程语言 提示f(n)=f(n-1)+f(n-3)、f(4)=2)

public class Test3 {
	public static int fn(int n) {
		if (n<4){
			return  1;
		}
		return  fn(n-1)+fn(n-3);
	}
	public static void main(String[] args) {
		for(int i = 1 ; i <= 50; i++){  
			System.out.println("第"+i+ "年后  : " + fn(i) +"头");    
		}  
	}
}
时间: 2024-10-12 19:14:44

递归处理母牛繁殖问题的相关文章

母牛繁殖问题

母牛的故事 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述. n=0表示输入数据的结束,不做处理.Output对于每个测试实例,输出在第n年的时候母牛的数量. 每个输出占一行. Sample Input 2 4 5 0 Sample Output 2 4 6 1 #include <iostr

算法初级面试题08——递归和动态规划的精髓、阶乘、汉诺塔、子序列和全排列、母牛问题、逆序栈、最小的路径和、数组累加成指定整数、背包问题

第八课主要介绍递归和动态规划 介绍递归和动态规划 暴力递归: 1,把问题转化为规模缩小了的同类问题的子问题 2,有明确的不需要继续进行递归的条件(base case) 3,有当得到了子问题的结果之后的决策过程 4,不记录每一个子问题的解 动态规划 1,从暴力递归中来 2,将每一个子问题的解记录下来,避免重复计算 3,把暴力递归的过程,抽象成了状态表达 4,并且存在化简状态表达,使其更加简洁的可能 图灵引入的是:我不知道怎么算,但是我知道怎么试.知道怎么暴力破解出来. 要学会,练习懂得怎么尝试.

左神算法第八节课:介绍递归和动态规划(汉诺塔问题;打印字符串的全部子序列含空;打印字符串的全排列,无重复排列;母牛数量;递归栈;数组的最小路径和;数组累加和问题,一定条件下最大值问题(01背包))

暴力递归: 1,把问题转化为规模缩小了的同类问题的子问题 2,有明确的不需要继续进行递归的条件(base case) 3,有当得到了子问题的结果之后的决策过程 4,不记录每一个子问题的解 动态规划 1,从暴力递归中来 2,将每一个子问题的解记录下来,避免重复计算 3,把暴力递归的过程,抽象成了状态表达 4,并且存在化简状态表达,使其更加简洁的可能 一:递归 1. 汉诺塔问题 汉诺塔问题(不能大压小,只能小压大),打印n层汉诺塔从最左边移动到最右边的全部过程. 左中右另称为 from.to.hel

1004: [递归]母牛的故事(python):(本地测试正确;但提交不对!!??)求教

时间限制: 1Sec 内存限制: 128MB 提交: 28438 解决: 8320 题目描述 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? 输入 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述.n=0表示输入数据的结束,不做处理. 输出 对于每个测试实例,输出在第n年的时候母牛的数量.每个输出占一行. 样例输入 2 4 5 0 样例输出 2 4 6 # 小

母牛的故事(c++递归过不了)

题目地址:https://www.dotcpp.com/oj/problem1004.html?sid=1755437&lang=1#editor c语言写递归能过,c++递归过不了. c++写非递归能过,时间慢. #include<iostream> using namespace std; int a[100]={0}; int solve(int year) { for(int i=1;i<=year;i++) { if(i<=4) { a[i]=i; } else

hdu-2018题(母牛问题)

HDU-2018题/*有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛?Input输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述.n=0表示输入数据的结束,不做处理.Output对于每个测试实例,输出在第n年的时候母牛的数量.每个输出占一行.Sample Input2450*/ 1 #include<iostream> 2 using namespa

C#语言基础——递归

递归 一.概念conception: 函数体内调用本函数自身,直到符合某一条件不再继续调用. 二.应满足条件factor: (1)有反复执行的过程(调用自身): (2)有跳出反复执行过程的条件(函数出口) 三.例子example 阶乘的计算n!= n*(n-1)*(n-2)*(n-3)*……*1(n>0) //int sum = i * jiecheng(i-1);解析 //i=5 //int sum = 5*jiecheng(4); //int sum = 5*(4*jiecheng(3));

斐波那契数列——母牛的故事

斐波那契数列 先普及一下基础知识 1.定义 斐波那契数列,又称黄金数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*). 2.通项公式 斐波那契数列:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ... 如果设F(n)为该数列的第n项(n∈N*),那么这句话可以写成如下形式:显然这是一个线性递推数列.通项公式(如上,

简单的递归

好久没刷题,现在看到这道简单的递归竟然卡了下=.=!分析问题的思维!! Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述. n=0表示输入数据的结束,不做处理. Output 对于每个测试实例,输出在第n年的时候母牛的数量. 每个输出占一行. Sample In