一对刚出生的兔子(一公一母)被放在一块田地里。兔子可以在一个月大的时候交配,所以在第二个月末,每对兔子都会生出两对新兔子,然后死去。
注:第 0 个月有 0 对兔子。第 1 个月,有 1 对兔子。
编写一个程序 - 使用 while 循环 - 从用户那里获取月数,并在该月末打印兔子对的数量。
在同一个 cpp 文件中,编写一个递归函数 rabbits(),它将月数作为输入,并返回该月末的兔子对数。
在主程序中,使用用户输入的数字调用函数 rabbits()。输出两个计算(即,您使用循环获得的计算和递归函数返回的计算)并查看它们是否相等。
描述是相当不言自明的。我已经关闭了主程序(常规斐波那契函数),但我无法弄清楚如何实现兔子在繁殖后死亡。我已经知道每隔一个月,兔子的数量就会翻倍,但我不知道如何实现。提前致谢。
#include <iostream>
using namespace std;
int rabbits (int);
int main ()
{
int x, month, result, counter = 0, rab_now, rab_lastmonth = 1, rab_twomonthsago = 0;
cout << "Please enter the month \n\n";
cin >> month;
cout << "\n";
result = rabbits (month);
while (counter <= month - 1)
{
rab_now = rab_lastmonth + rab_twomonthsago;
x = rab_lastmonth;
rab_lastmonth = rab_now;
rab_twomonthsago = x;
counter++;
}
cout << "At the end of month " << month << ", there will be " << rab_lastmonth << "
pairs of rabbits" << endl;
system("PAUSE");
return 0;
}
int rabbits (int month)
{
if (month == 0)
{
return 0;
}
else if (month == 1)
{
return 1;
}
else
{
return (rabbits (month + 1) + rabbits (month - 2));
}
}