斐波那契数列(兔子繁殖)问题

算法描述:

古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前20个月的数量)

输出格式:

输出20个数字,

思路:

斐波那契数列(Fibonacci sequence),又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)。就是前两个数的和等于第三个数的值。

程序代码:

  • 非递归方式:
#include
int main(){
	int n1,n2;
	n1=n2=1;
	for(int i=0;i<10;i++){
		printf("%d\n",n1);
		printf("%d\n",n2);
		n1=n1+n2;
		n2=n2+n1;
	}
	return 0;
} 
  •  递归方式:
#include
int Fibon(int n){
	if(n==1||n==2){
		return 1;
	}else{
		return Fibon(n-1)+Fibon(n-2);
	}
}
int main(){
	
	for(int i=1;i<=20;i++){
		printf("%d\n",Fibon(i));
	}
	return 0;
} 
  • 数组表示
#include
int main(){
	int a[20]={0};
	a[0]=a[1]=1;
	for(int i=2;i<20;i++){
		a[i]=a[i-1]+a[i-2];
	}
	for(int i=1;i<20;i++){
		printf("%d\n",a[i]);
	}
	return 0;
} 

运行结果:

斐波那契数列(兔子繁殖)问题_第1张图片

你可能感兴趣的:(#,算法笔记)