#include <stdio.h>
// 【手順 1】int型のグローバル変数 c を宣言(countとして使用)
int count = 0;
// 3項漸化式の再帰関数
int rec(int n) {
// 【手順 2】rec関数の実行ごとに c をインクリメント
count++;
// ベースケース (初期値)
if (n == 1) {
return 1;
} else if (n == 2) {
return 2;
}
// 再帰ステップ (元の漸化式を適用)
// P11のコードをこの部分に置き換えて使用してください。
return -6 * rec(n - 1) - 9 * rec(n - 2);
}
int main(void) {
int n = 5; // 実行例の a5=-459 に合わせるため n=5
// 数列の値の計算
int value = rec(n);
printf("数列a%dの値は%d\n", n
, value
);
// 【手順 3】main関数内で c の値を表示
printf("このときrecの呼び出し回数は%d\n", count
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyDjgJDmiYvpoIYgMeOAkWludOWei+OBruOCsOODreODvOODkOODq+WkieaVsCBjIOOCkuWuo+iogO+8iGNvdW5044Go44GX44Gm5L2/55So77yJCmludCBjb3VudCA9IDA7IAoKLy8gM+mghea8uOWMluW8j+OBruWGjeW4sOmWouaVsAppbnQgcmVjKGludCBuKSB7CiAgICAvLyDjgJDmiYvpoIYgMuOAkXJlY+mWouaVsOOBruWun+ihjOOBlOOBqOOBqyBjIOOCkuOCpOODs+OCr+ODquODoeODs+ODiAogICAgY291bnQrKzsgCgogICAgLy8g44OZ44O844K544Kx44O844K5ICjliJ3mnJ/lgKQpCiAgICBpZiAobiA9PSAxKSB7CiAgICAgICAgcmV0dXJuIDE7IAogICAgfSBlbHNlIGlmIChuID09IDIpIHsKICAgICAgICByZXR1cm4gMjsgCiAgICB9IAoKICAgIC8vIOWGjeW4sOOCueODhuODg+ODlyAo5YWD44Gu5ry45YyW5byP44KS6YGp55SoKQogICAgLy8gUDEx44Gu44Kz44O844OJ44KS44GT44Gu6YOo5YiG44Gr572u44GN5o+b44GI44Gm5L2/55So44GX44Gm44GP44Gg44GV44GE44CCCiAgICByZXR1cm4gLTYgKiByZWMobiAtIDEpIC0gOSAqIHJlYyhuIC0gMik7IAp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgbiA9IDU7IC8vIOWun+ihjOS+i+OBriBhNT0tNDU5IOOBq+WQiOOCj+OBm+OCi+OBn+OCgSBuPTUKICAgIAogICAgLy8g5pWw5YiX44Gu5YCk44Gu6KiI566XCiAgICBpbnQgdmFsdWUgPSByZWMobik7IAoKICAgIHByaW50Zigi5pWw5YiXYSVk44Gu5YCk44GvJWRcbiIsIG4sIHZhbHVlKTsgCiAgICAKICAgIC8vIOOAkOaJi+mghiAz44CRbWFpbumWouaVsOWGheOBpyBjIOOBruWApOOCkuihqOekugogICAgcHJpbnRmKCLjgZPjga7jgajjgY1yZWPjga7lkbzjgbPlh7rjgZflm57mlbDjga8lZFxuIiwgY291bnQpOyAKICAgIAogICAgcmV0dXJuIDA7Cn0=