—经典兔子问题
//递归写法O(2n)
int Fib(int day)
{
if (day <= 1)
return day;
else
return Fib(day - 1) + Fib(day - 2);
}
int main()
{
while (1)
{
int day;
printf("请输入天数:");
scanf("%d", &day);
printf("第%d天共%d对兔子\n\n", day,Fib(day));
}
system("pause");
return 0;
}
//优化 O(n)
int main()
{
while (1)
{
int day;
printf("请输入天数:");
scanfint("%d", &day);
int i = 0;
int j = 1;
int q;
int sum = 0;
if (day < 1)
{
printf("天数不能小于1,请重新输入\n\n");
continue;
}
if (day < 3)
printf("第%d天共1对兔子\n\n",day);
else
{
for (int count = 1; count < day; ++count)
{
sum = i + j;
i = j;
j = sum;
}
printf("第%d天共%d对兔子\n\n", day, sum);
}
}
system("pause");
return 0;
}