生まれたばかりのウサギのペア(オス1匹、メス1匹)をフィールドに入れます。ウサギは1か月齢で交尾できるため、2か月目の終わりに、各ペアは2つの新しいウサギのペアを生成してから死亡します。
注:0か月目には、0組のウサギがいます。1か月目には、1組のウサギがいます。
whileループを使用して、ユーザーから月数を取得し、その月の終わりにウサギのペアの数を出力するプログラムを作成します。
同じcppファイルに、月数を入力として受け取り、その月の終わりのウサギのペアの数を返す再帰関数rabbits()を記述します。
メインプログラムで、ユーザーが入力した番号を使用して関数rabbits()を呼び出します。両方の計算(つまり、ループで取得した計算と再帰関数が返す計算)を出力し、それらが等しいかどうかを確認します。
説明はかなり自明です。私はすでにメインプログラム(通常のフィボナッチ機能)を停止していますが、繁殖後に死んでいくウサギを実装する方法がわかりません。隔月でうさぎの数が2倍になることはすでに知っていますが、どうやって実装すればいいのかわかりません。前もって感謝します。
#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));
}
}