母牛的故事
[题目链接]https://www.dotcpp.com/oj/problem1004.html
题意
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛
思路
- 往后的年份中,计算上一年的母牛数和三年前的母牛数(今年是第四年,他们已经长大了)
- 通俗的讲,这一年的牛=原来的牛+这一年出生的牛
- u-3=小牛3年之后会生小牛,u-1=前一年会生的牛今年依然会生。
坑点
- 要考虑小牛什么时候生小牛,以及
算法一:[递归]
实现步骤
- 先定义一个函数,为下面做准备,if表判断(牛的是否小于4)四年之前只有一只老母牛在生产,/4年之后,小牛要生小牛。
- 主函数中循环输入,n不等于0时,输出函数
代码
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
int dfs(int u)//先定义一个函数,为下面做准备,if表判断(牛的年龄是否小于4)
{
if(u<4)//四年之前只有一只老母牛在生产。
{
return u;//就输出u
}
else//4年之后,小牛要生,
{
return dfs(u-1)+dfs(u-3);
}
}
int main()//主函数
{
int n;
while(cin>>n&&n!=0)//循环输入,n不等于0时,输出函数
{
cout<<dfs(n)<<" ";//函数计算,输出,“”表示空格
}
return 0;
}
总结
这是一道递归题,要先定义一个函数,再在主函数中应用这个函数。