#include <stdio.h>
// 1. int型のグローバル変数 c を宣言する(呼び出し回数カウンタ)
int c = 0;
/*
* 3項間漸化式:a_n = -6a_{n-1} - 9a_{n-2}
* 初期条件:a_1 = 1, a_2 = 2
*
* @param n 求める項の番号
* @return 数列の第 n 項の値
*/
int rec(int n) {
// 2. rec関数内でインクリメントを行い、recの実行ごとにcを増やす
c++;
// 初期条件
if (n == 1) {
return 1;
}
if (n == 2) {
return 2;
}
// 漸化式による再帰計算
return -6 * rec(n - 1) - 9 * rec(n - 2);
}
int main(void) {
int n = 5; // 求める項
// rec関数が呼ばれる前にcを初期化(今回はグローバル変数宣言時に0)
// 数列の項の値を計算し、表示
printf("数列a%dの値は%d\n", n
, rec
(n
));
// 3. main関数内でprintfを追加して、cの値を表示させる
printf("このときrecの呼び出し回数は%d\n", c
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiAKLy8gMS4gaW505Z6L44Gu44Kw44Ot44O844OQ44Or5aSJ5pWwIGMg44KS5a6j6KiA44GZ44KL77yI5ZG844Gz5Ye644GX5Zue5pWw44Kr44Km44Oz44K/77yJCmludCBjID0gMDsKIAovKgogKiAz6aCF6ZaT5ry45YyW5byP77yaYV9uID0gLTZhX3tuLTF9IC0gOWFfe24tMn0KICog5Yid5pyf5p2h5Lu277yaYV8xID0gMSwgYV8yID0gMgogKgogKiBAcGFyYW0gbiDmsYLjgoHjgovpoIXjga7nlarlj7cKICogQHJldHVybiDmlbDliJfjga7nrKwgbiDpoIXjga7lgKQKICovCmludCByZWMoaW50IG4pIHsKICAgIC8vIDIuIHJlY+mWouaVsOWGheOBp+OCpOODs+OCr+ODquODoeODs+ODiOOCkuihjOOBhOOAgXJlY+OBruWun+ihjOOBlOOBqOOBq2PjgpLlopfjgoTjgZkKICAgIGMrKzsgCiAKICAgIC8vIOWIneacn+adoeS7tgogICAgaWYgKG4gPT0gMSkgewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgaWYgKG4gPT0gMikgewogICAgICAgIHJldHVybiAyOwogICAgfQogCiAgICAvLyDmvLjljJblvI/jgavjgojjgovlho3luLDoqIjnrpcKICAgIHJldHVybiAtNiAqIHJlYyhuIC0gMSkgLSA5ICogcmVjKG4gLSAyKTsKfQogCmludCBtYWluKHZvaWQpIHsKICAgIGludCBuID0gNTsgLy8g5rGC44KB44KL6aCFCiAKICAgIC8vIHJlY+mWouaVsOOBjOWRvOOBsOOCjOOCi+WJjeOBq2PjgpLliJ3mnJ/ljJbvvIjku4rlm57jga/jgrDjg63jg7zjg5Djg6vlpInmlbDlrqPoqIDmmYLjgasw77yJCiAKICAgIC8vIOaVsOWIl+OBrumgheOBruWApOOCkuioiOeul+OBl+OAgeihqOekugogICAgcHJpbnRmKCLmlbDliJdhJWTjga7lgKTjga8lZFxuIiwgbiwgcmVjKG4pKTsKIAogICAgLy8gMy4gbWFpbumWouaVsOWGheOBp3ByaW50ZuOCkui/veWKoOOBl+OBpuOAgWPjga7lgKTjgpLooajnpLrjgZXjgZvjgosKICAgIHByaW50Zigi44GT44Gu44Go44GNcmVj44Gu5ZG844Gz5Ye644GX5Zue5pWw44GvJWRcbiIsIGMpOwogCiAgICByZXR1cm4gMDsKfQo=