#include <stdio.h>
int c = 0;
int rec(int n) {
c++;
if (n == 0) return 3;
else if (n == 1) return 0;
else if (n == 2) return 2;
else return rec(n - 2) + rec(n - 3);
}
int main(void) {
int n = 9;
int result = rec(n);
printf("数列a%dの値は: %d\n", n
, result
); printf("このときrec()呼び出し回数は%d\n", c
);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgppbnQgYyA9IDA7ICAKaW50IHJlYyhpbnQgbikgewogICAgYysrOyAKCiAgICBpZiAobiA9PSAwKSByZXR1cm4gMzsKICAgIGVsc2UgaWYgKG4gPT0gMSkgcmV0dXJuIDA7CiAgICBlbHNlIGlmIChuID09IDIpIHJldHVybiAyOwogICAgZWxzZSByZXR1cm4gcmVjKG4gLSAyKSArIHJlYyhuIC0gMyk7Cn0KCmludCBtYWluKHZvaWQpIHsKICAgIGludCBuID0gOTsgIAogICAgaW50IHJlc3VsdCA9IHJlYyhuKTsKCiAgICBwcmludGYoIuaVsOWIl2ElZOOBruWApOOBrzogJWRcbiIsIG4sIHJlc3VsdCk7CiAgICBwcmludGYoIuOBk+OBruOBqOOBjXJlYygp5ZG844Gz5Ye644GX5Zue5pWw44GvJWRcbiIsIGMpOwoKICAgIHJldHVybiAwOwp9Cg==