#include <stdio.h>
//a{n} = -6a{n-1} -9a{n-2}, a{1}=1, a{2}=2(再帰あり版)
int c = 0; // 1. グローバル変数 c(recの呼び出し回数)
int rec(int n){
c++; // 2. recが実行されるたびに c を増やす
if(n == 1){
return 1;
}
else if(n == 2){
return 2;
}
else{
return -6*rec(n-1) - 9*rec(n-2);
}
}
int main(void) {
int n = 4;
printf("数列a%dの値は%d\n", n
, rec
(n
)); printf("recの呼び出し回数は%d回\n", c
); // 3. c を表示 return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Ci8vYXtufSA9IC02YXtuLTF9IC05YXtuLTJ9LCBhezF9PTEsIGF7Mn09Mijlho3luLDjgYLjgorniYgpCgppbnQgYyA9IDA7ICAvLyAxLiDjgrDjg63jg7zjg5Djg6vlpInmlbAgYyhyZWPjga7lkbzjgbPlh7rjgZflm57mlbApCgppbnQgcmVjKGludCBuKXsKICAgIGMrKzsgICAgLy8gMi4gcmVj44GM5a6f6KGM44GV44KM44KL44Gf44Gz44GrIGMg44KS5aKX44KE44GZCiAgICBpZihuID09IDEpewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgZWxzZSBpZihuID09IDIpewogICAgICAgIHJldHVybiAyOwogICAgfQogICAgZWxzZXsKICAgICAgICByZXR1cm4gLTYqcmVjKG4tMSkgLSA5KnJlYyhuLTIpOwogICAgfQp9CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgbiA9IDQ7CiAgICBwcmludGYoIuaVsOWIl2ElZOOBruWApOOBryVkXG4iLCBuLCByZWMobikpOwogICAgcHJpbnRmKCJyZWPjga7lkbzjgbPlh7rjgZflm57mlbDjga8lZOWbnlxuIiwgYyk7ICAvLyAzLiBjIOOCkuihqOekugogICAgcmV0dXJuIDA7Cn0=