您的位置:首页 > 其它

母牛的故事

2017-05-08 14:11 211 查看
题目描述

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

输入

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

  n=0表示输入数据的结束,不做处理。

输出

  对于每个测试实例,输出在第n年的时候母牛的数量。

  每个输出占一行。

样例输入

  2

  4

  5

  0

样例输出

  2

  4

  6

  显然第n年牛的数量等于第n-1年牛的数量加上第n年出生牛的数量,而第n年出生牛的数量等于第n-3年牛的数量,因为只有第n-3年的牛才能在第n年生小牛。即满足一个递归式f(n)=f(n-1)+f(n-2)。采用递归效率很低(运行超时),这里采用迭代的方式求解。

代码如下:

#include<stdio.h>
int main()
{
int n,x,y,z,fn,i;
while(scanf("%d",&n)&&n!=0)
{
//x,y,z代表连续三年的母牛数
x=1;
y=2;
z=3;
if(n<4)
printf("%d\n",n);
else
{
for(i=4; i<=n; i++)
{
fn=x+z;
x=y;
y=z;
z=fn;
}
printf("%d\n",fn);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  递归 迭代