母牛的故事-CSDN博客

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

    2
    4
    5
    0

Sample Output

    2
    4
    6

 


#include<stdio.h>
int main()
{
	int num[100];
	int month,i;
	while(scanf("%d",&month)!=0)
	{
		if(month==0)
		break;
		num[1]=1;
		num[2]=2;
		num[3]=3;
	
		for( i=4;i<=month;i++)
		{
			num[i]=num[i-1]+num[i-3];
		}
		printf("%d\n",num[month]);
		
	}
	return 0;
 } 

当然这道题我们也可以使用递归来做

但是递归导致内存溢出无法通过这道题!!!



int num(int month)
{
	if(month==1)
	return 1;
	else if(month==2)
	return 2;
	else if(month==3)
	return 3;
	else if(month==4)
	return 4;
	else
	return num(month-1)+num(month-3);
}
//递归 


#include<stdio.h>
int main()
{
	int month;
	while(scanf("%d",&month)!=0)
	{
		printf("%d\n",num(month));
	}
	return 0;
 }