假设一对小兔的成长期为一个月,即一个月可长成成兔,那么,如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月就开始生兔子,试问从一对兔子开始繁殖,一年后能有多少对兔子
兔子生崽问题

小兔子对数和大兔子对数构成两个相同的数列,不过小兔子对数数列向后推迟了一个月,因为上月有几对大兔子,这个月就应有几对小兔子+上个月小兔子对数
每个月大兔子对数=上个月大兔子对数+上个月小兔子对数
综合上面两条有;每个月大兔子对数=前两个月大兔子对数之和.用fn表示第n个月大兔子的对数,于是依题意有
f1=1 (n=1)
f2=1 (n=2)
fn=fn-1+fn-2 (n>=3)

依次让n=1.,2,3
可求出每个月的兔子对数
1,2,3,5,8,13,21,34,55,89,144,233…

用数组实现

#include<stdio.h>
#define YEAR_MONTH 12
int main()
{
    int f[YEAR_MONTH+1]={0,1,2};
    int month;
    for(month=3;month<YEAR_MONTH;month++)
    {
        f[month]=f[month-1]+f[month-2];
    }
    for(month=1;month<YEAR_MONTH;month++)
    {
        printf("%d\t",f[month]);
    }
    printf("\nsum=%d\n",f[YEAR_MONTH]);
    return 0;
}

循环解决

#include<stdio.h>
int main(void){
	int N;
	scanf("%d",&N);
	if(N==1) printf("1");
	else{
		int i,count,x1,x2,sum,x;
		sum=2,x1=1,x2=1,x=0;
		
		for(i=2;x2<N;i++){
			x=x1+x2;
			x1=x2;
			x2=x;
	}
	printf("%d",i);	
	}
	
	return 0;
} 

相关文章:

  • 2021-12-29
  • 2021-07-31
  • 2022-02-26
  • 2021-05-16
猜你喜欢
  • 2022-02-09
  • 2022-01-15
  • 2022-02-27
  • 2022-12-23
  • 2021-11-24
  • 2022-02-02
相关资源
相似解决方案