C语言经典求解每个月小兔子数目

C语言经典求解每个月小兔子数目

题目:假设第1个月有1对刚诞生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1对兔子,兔子永不死去……那么,由1对初生兔子开始,求几个月后会有多少对兔子呢?

  1. 分析:兔子规律数:1,1,2,3,5,8,13,21……
    2.斐波那契数列小代码

			f1=f1+f2;          
			f2=f1+f2;            //斐波那契数列规律
			

方法一

1.直接打印出来 斐波那契数列

# include
int main()
{
     
	long int f1,f2;     
	int i;
	f1=f2=1;
	for(i=1;i<=20;i++)
	{
     
		printf("%12d %12d",f1,f2);
			if(i%2==0)	
				printf("\n");     //四个一行打印(一次打印两个,两次循环打印四个)
			f1=f1+f2;          
			f2=f1+f2;            //斐波那契数列规律
	}
	return 0;
}

2.执行结果如下
C语言经典求解每个月小兔子数目_第1张图片

方法二

1.另一种详细求解每个月小兔子个数

# include
int rabbit(int month)
{
     
	int sum;
	if(month>=1&&month<=2)	//易错点:第一月和第二月都是1,容易错写成month==1&&month==2
		{
     sum=1;}
	if(month==3)           //易错点:若此处写成=号则表示赋值含义	
		{
     sum=2;}
	if (month>3)      
		{
     sum=rabbit(month-1)+rabbit(month-2);}
	return sum;
}
int main()
{
     
	int rabbit(int month);   
	int month;
	int rabbits;
	while(1)              //无限循环
	{
     
		printf("month= ");
		scanf("%d",&month);
		rabbits=rabbit(month);
		printf("%d month(s) later have %d rabbit(s)\n",month,rabbits);
		/*printf("%d month(s) later have %d rabbit(s)\n",month,rabbit(month));常用两种形式*/
	}
}

2.执行结果如下
C语言经典求解每个月小兔子数目_第2张图片

方法三

1.利用数组求解

# include
int main()
{
     
	int r[24],m,i;       //为了便于理解r表示rabbit,m表示month
	while(1)
	{
     
	printf("month=  ");
	scanf("%d",&m);
	if(1<=m<=24)
	{
     r[1]=1;r[2]=1;}

	for(i=1;i<m;i++)
	{
     r[i+2]=r[i+1]+r[i];}
	printf("%d\n",r[m]);
	}
}

2.执行结果如下
C语言经典求解每个月小兔子数目_第3张图片
综上可以看出菲波那切数列的增长是非常快的,运算出的结果令我也非常吃惊。
最后本人小白一枚,若上述内容有所纰漏或错误,还请批评指正。

你可能感兴趣的:(C语言小小案例)