兔子繁殖问题的几种算法(函数形式)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//兔子繁殖问题(Fibonacci数列)的几种算法
#include
#include
int fib1(int month)
{
int fib,f1=1,f2=1,i;
printf("%12d%12d",f1,f2);
for(i=3;i<=month;i++)
{
fib=f1+f2;
f2=f1,f1=fib;
printf("%12d",fib);
if(i%4==0)
printf("\n");
}
return 1;
}
int fib2(int month)
{
int f1=1,f2=1,i;
printf("%12d%12d",f1,f2);
for(i=2;i<=month/2;i++)
{
f1=f1+f2;
f2=f1+f2;
printf("%12d%12d",f1,f2);
if(i%2==0)
printf("\n");
}
return 1;
}
int fib3(int month)
{
int young=1,midlife=0,old=0,total,i=1;
for(;i<=month;i++)
{
total=old+midlife+young;
printf("%12d",total);
old=old+midlife,midlife=young,young=old;
if(i%4==0)
printf("\n");
}
return 1;
}
int fib4(int month)
{
int sum=0;
if(month<3)
sum=1;
else
sum=fib4(month-1)+fib4(month-2);
return sum;
}
int fib5(int month)
{
int i,fib[100]={1,1};
printf("%12d%12d",1,1);
for(i=2;i
fib[i]=fib[i-1]+fib[i-2];
printf("%12d",fib[i]);
if((i+1)%4==0)
printf("\n");
}
return 1;
}
main()
{
int select=1,month;
while(select)
{
system("cls");
printf("兔子繁殖问题的几种迭代算法选择(1~3):\n");
printf("1:按Fibonacci数列的性质迭代算法:\n");
printf("2:按一次迭代计算二个月兔子数的算法:\n");
printf("3:按兔子繁殖问题的本义的迭代算法:\n");
printf("4:兔子繁殖问题的递归算法:\n");
printf("5:用一维数组计算兔子繁殖问题的算法:\n");
printf("0:退出\n");
scanf("%d",&select);
switch(select)
{
case 1:printf("你选择了1:按Fibonacci数列的性质迭代算法,请输入月数:");
scanf("%d",&month);
select=fib1(month);
break;
case 2:printf("你选择了2:按一次迭代计算二个月兔子数的算法,请输入月数:");
scanf("%d",&month);
select=fib2(month);
break;
case 3:printf("你选择了3:按兔子繁殖问题的本义的迭代算法,请输入月数:");
scanf("%d",&month);
select=fib3(month);
break;
case 4:printf("你选择了4:兔子繁殖问题的递归算法,请输入月数:");
scanf("%d",&month);
printf("第%d个月的兔子总数是%d只。\n",month,select=fib4(month));
break;
case 5:printf("你选择了5:用一维数组计算兔子繁殖问题的算法,请输入月数:");
scanf("%d",&month);
select=fib5(month);
break;
default :select=0;
}
system("pause");
}
}