母牛繁殖问题

母牛的故事

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

Input

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。

n=0表示输入数据的结束,不做处理。Output对于每个测试实例,输出在第n年的时候母牛的数量。

每个输出占一行。

Sample Input

2
4
5
0

Sample Output

2
4
6
 1 #include <iostream>
 2
 3 using namespace std;
 4
 5 int sum(int n)    //sum(n)表示第n年年初(第n年的母牛还没出生)母牛的数量
 6 {
 7     if (n <= 4)
 8         return n;
 9     return sum(n-3)+sum(n-1); //sum(n-3)表示3年前的母牛数量,这些母牛在第n-1年都能繁殖一倍                    //sum(n-1)表示前一年年初的母牛数量                   //所以第n-1年年初的母牛+在第n-1年出生的母牛 = 第n年年初的母牛10 }
11
12 int main()
13 {
14     int n;
15     while (1){
16         cin >> n;
17         if (n == 0)
18             break;
19         int num = sum(n);
20         cout << num << endl;
21     }
22 }

感悟

运用递归方法:f(n)=f(n-1)+f(n-3)

递归就是把一个复杂的问题,分解成能用同一种方法解决的若干个小问题。

原文地址:https://www.cnblogs.com/WeiTaoHu/p/9692355.html

时间: 2024-11-05 18:48:40

母牛繁殖问题的相关文章

递归处理母牛繁殖问题

有一个农场在第一年的时候买了一头刚出生牛,这头牛在第四年的时候就能生一头小牛,以后每年这头牛就会生一头小牛.这些小牛成长到第四牛又会生小牛,以后每年同样会生一头牛,假设牛不死,如此反复.请问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

hdu-2018题(母牛问题)

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

for循环——兔子繁殖问题

有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面.已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子.假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?  分析:兔子的规律为数列,1,1,2,3,5,8,13,21 (用循环实现) System.out.println("第1个月兔子的对数: 1"); System.out.println("第2个月兔子的对数: 1"); int

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

斐波那契数列 先普及一下基础知识 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*),那么这句话可以写成如下形式:显然这是一个线性递推数列.通项公式(如上,

斐波那契数列(母牛)

有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? #include <stdio.h> #include <stdlib.h> int feibo(int n) { int a[60],i; a[1]=1; a[2]=2; a[3]=3; for(i=4;i<=n;i++) a[i]=a[i-1]+a[i-3]; return a[n]; } int main() { int n; while(

[LeetCode] Bulls and Cows 公母牛游戏

You are playing the following Bulls and Cows game with your friend: You write a 4-digit secret number and ask your friend to guess it, each time your friend guesses a number, you give a hint, the hint tells your friend how many digits are in the corr

母牛生仔的递归算法和非递归算法。

//一只母牛,第二年底生一只母牛和一只公牛,第三年底生一只母牛 ,第五年开始母牛会死.公牛也只能活四年.请问一个农场开始只有一只刚出生的母牛,N年后一共有多少只牛. //请写一个函数输出结果,用递归和非递归两种方法来实现. function cowrecursion($i) { if ($i == 1) //如果是第一年,则1头牛. { return 1; } elseif ($i == 2) { return 2 + cowrecursion(1); //第一母牛和儿子们+第二母牛第一年 }

HDU-2018 母牛的故事

http://acm.hdu.edu.cn/showproblem.php?pid=2018 母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 50087    Accepted Submission(s): 25017 Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每

hdoj-2018 母牛的故事

母牛的故事 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 53630    Accepted Submission(s): 26935 Problem Description 有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测