#include <stdio.h>
// 1. int型のグローバル変数 c を宣言
int count = 0;
// 3項漸化式の関数 (元のコードをベースとして使用)
int rec(int n) {
// 2. rec関数の実行ごとに c をインクリメント
count++;
// ベースケース (P11のコードを想定して具体的な値は省略)
if (n == 0) return /* a0 の値 */;
if (n == 1) return /* a1 の値 */;
if (n == 2) return /* a2 の値 */;
// 漸化式の再帰呼び出し部分 (P11のコードに合わせる)
return /* c1 * rec(n-1) + c2 * rec(n-2) + c3 * rec(n-3) のような形 */;
}
int main(void) {
int n = 5; // 例として n=5
// 数列の値の計算
int value = rec(n);
printf("数列a%dの値は%d\n", n
, value
);
// 3. main関数内で c の値を表示
printf("このときrecの呼び出し回数は%d\n", count
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyAxLiBpbnTlnovjga7jgrDjg63jg7zjg5Djg6vlpInmlbAgYyDjgpLlrqPoqIAKaW50IGNvdW50ID0gMDsgCgovLyAz6aCF5ry45YyW5byP44Gu6Zai5pWwICjlhYPjga7jgrPjg7zjg4njgpLjg5njg7zjgrnjgajjgZfjgabkvb/nlKgpCmludCByZWMoaW50IG4pIHsKICAgIC8vIDIuIHJlY+mWouaVsOOBruWun+ihjOOBlOOBqOOBqyBjIOOCkuOCpOODs+OCr+ODquODoeODs+ODiAogICAgY291bnQrKzsgCgogICAgLy8g44OZ44O844K544Kx44O844K5IChQMTHjga7jgrPjg7zjg4njgpLmg7PlrprjgZfjgablhbfkvZPnmoTjgarlgKTjga/nnIHnlaUpCiAgICBpZiAobiA9PSAwKSByZXR1cm4gLyogYTAg44Gu5YCkICovOwogICAgaWYgKG4gPT0gMSkgcmV0dXJuIC8qIGExIOOBruWApCAqLzsKICAgIGlmIChuID09IDIpIHJldHVybiAvKiBhMiDjga7lgKQgKi87CgogICAgLy8g5ry45YyW5byP44Gu5YaN5biw5ZG844Gz5Ye644GX6YOo5YiGIChQMTHjga7jgrPjg7zjg4njgavlkIjjgo/jgZvjgospCiAgICByZXR1cm4gLyogYzEgKiByZWMobi0xKSArIGMyICogcmVjKG4tMikgKyBjMyAqIHJlYyhuLTMpIOOBruOCiOOBhuOBquW9oiAqLzsgCn0KCmludCBtYWluKHZvaWQpIHsKICAgIGludCBuID0gNTsgLy8g5L6L44Go44GX44GmIG49NSAKCiAgICAvLyDmlbDliJfjga7lgKTjga7oqIjnrpcKICAgIGludCB2YWx1ZSA9IHJlYyhuKTsgCgogICAgcHJpbnRmKCLmlbDliJdhJWTjga7lgKTjga8lZFxuIiwgbiwgdmFsdWUpOyAKICAgIAogICAgLy8gMy4gbWFpbumWouaVsOWGheOBpyBjIOOBruWApOOCkuihqOekugogICAgcHJpbnRmKCLjgZPjga7jgajjgY1yZWPjga7lkbzjgbPlh7rjgZflm57mlbDjga8lZFxuIiwgY291bnQpOyAKICAgIAogICAgcmV0dXJuIDA7Cn0K