课堂上按照老师给的代码打,最后打出来的代码不能正确输出数字 可以帮我解下吗
兔子繁殖问题,有一对新生兔子每个月繁殖一对兔子,过了三个月后新生的兔子又可以繁殖一对 老师提供的代码只能是算到10个月的时候 超过了10个月或者输入的数是单数就会出现错误 有没有人帮忙优化这个代码
#include
int main(){
int f1,f2,count,num;
f1=1,f2=1,count=2;
printf("月 :");
scanf("%d",&num);
while(count<=num){
printf("%3d%3d",f1,f2);
f1=f1+f2;
f2=f1+f2;
count=count+2;
}
printf("\n");
return 0;
}
一时激动忘记发图片上去了
我也是醉了,贴个图就是这样
你还是好好看看老师怎么写的吧,题目要求都没有。帮不了你啊
你要告诉大家你要干什么,什么要求再贴图。。。 最好能把源代码贴上,方便调试
你的图谁看得清啊,发清楚一点
f(n)=f(n-1)+f(n-3) n>3
不能正确输出数字是什么意思?举个例子
//优化后的兔子繁殖代码。
int main(){
int num = 0;
int i = 0;
int nOver3Month = 1;
int nOver2Month = 0;
int nOver1Month = 0;
int nOver0Month = 0;
printf("请输入月数:");
scanf("%d", &num);
while (i < num)
{
if (i < 1)
{
nOver0Month += nOver3Month;
}
else if (i < 2)
{
nOver1Month += nOver0Month;
nOver0Month = nOver3Month;
}
else if (i < 3)
{
nOver2Month += nOver1Month;
nOver1Month = nOver0Month;
nOver0Month = nOver3Month;
}
else
{
nOver3Month++;
nOver0Month = nOver3Month;
}
printf("Month(%d): %d\r\n", i++, (nOver0Month + nOver1Month + nOver2Month + nOver3Month) * 2);
}
return 0;
}
qq:523381005
主页:http://www.ppsbbs.tech
补充说明:支持超过10年
/////////////////////////////////////////////////////////////////
// 作者:xingyun86
// QQ: 523381005
// 日期:2017-10-12
//优化后的兔子繁殖代码。
修复并优化之前发的代码。目前最大支持到自己算一下吧。
int main(){
int num = 0;
int i = 0;
ULONGLONG nOver3Month = 1;
ULONGLONG nOver2Month = 0;
ULONGLONG nOver1Month = 0;
ULONGLONG nOver0Month = 0;
RETRY:
num = 0;
i = 0;
nOver3Month = 1;
nOver2Month = 0;
nOver1Month = 0;
nOver0Month = 0;
printf("====================================\r\n");
printf("0--Quit, [1, 0xFFFF]--Calc:\r\n");
printf("请输入月数:");
scanf("%d", &num);
if (num == 0)
{
return 0;
}
while (i < num)
{
nOver3Month += nOver2Month;
nOver2Month = nOver1Month;
nOver1Month = nOver0Month;
nOver0Month = nOver3Month;
printf("%llu,%llu,%llu,%llu\r\n", nOver0Month, nOver1Month, nOver2Month, nOver3Month);
printf("Month(%d): %llu\r\n", i++, (nOver0Month + nOver1Month + nOver2Month + nOver3Month) * 2);
}
goto __RETRY__;
return 0;
}
//修复了算法的逻辑问题。
有没有考虑到生出来的兔子性别问题?雄兔子也能生?小兔子夭折概率?畸形概率?成长中的死亡概率?其他变异概率?
作为一位程序员,要有严谨慎密的思维,要敢于面对现实状况。。。
nt count = 0;
int m0 = 0, m1 = 0, m2 = 0, m3 = 1;
count = m3;
while (i < num)
{
m3 += m2;
m2 = m1;
m1 = m0;
m0 = m3;
count += m0;
printf("%d: %d\n", i++, count * 2);
}