#include <stdio.h>
// 3項間漸化式: a_n = a_{n-2} + a_{n-3}
// 初期条件: a_0 = 3, a_1 = 0, a_2 = 2
long long rec(int n) {
// ベースケース(初期条件)
if (n == 0) {
return 3;
}
if (n == 1) {
return 0;
}
if (n == 2) {
return 2;
}
// 再帰ステップ(漸化式)
// n >= 3 の場合: a_n = a_{n-2} + a_{n-3}
return rec(n - 2) + rec(n - 3);
}
int main(void) {
int n = 50;
printf("--- 課題3: 数列 a_n = a_{n-2} + a_{n-3} (再帰版) ---\n");
// i=0 から i=50 まで繰り返し rec(i) を呼び出す
for(int i = 0; i <= n; i++){
// long long型を出力するために %lld を使用
printf("a%02d: %lld\n", i
, rec
(i
));
if ((i + 1) % 5 == 0) {
}
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgovLyAz6aCF6ZaT5ry45YyW5byPOiBhX24gPSBhX3tuLTJ9ICsgYV97bi0zfQovLyDliJ3mnJ/mnaHku7Y6IGFfMCA9IDMsIGFfMSA9IDAsIGFfMiA9IDIKbG9uZyBsb25nIHJlYyhpbnQgbikgewogICAgLy8g44OZ44O844K544Kx44O844K577yI5Yid5pyf5p2h5Lu277yJCiAgICBpZiAobiA9PSAwKSB7CiAgICAgICAgcmV0dXJuIDM7CiAgICB9CiAgICBpZiAobiA9PSAxKSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBpZiAobiA9PSAyKSB7CiAgICAgICAgcmV0dXJuIDI7CiAgICB9CiAgICAKICAgIC8vIOWGjeW4sOOCueODhuODg+ODl++8iOa8uOWMluW8j++8iQogICAgLy8gbiA+PSAzIOOBruWgtOWQiDogYV9uID0gYV97bi0yfSArIGFfe24tM30KICAgIHJldHVybiByZWMobiAtIDIpICsgcmVjKG4gLSAzKTsKfQoKaW50IG1haW4odm9pZCkgewogICAgaW50IG4gPSA1MDsgCiAgICAKICAgIHByaW50ZigiLS0tIOiqsumhjDM6IOaVsOWIlyBhX24gPSBhX3tuLTJ9ICsgYV97bi0zfSAo5YaN5biw54mIKSAtLS1cbiIpOwogICAgCiAgICAvLyBpPTAg44GL44KJIGk9NTAg44G+44Gn57mw44KK6L+U44GXIHJlYyhpKSDjgpLlkbzjgbPlh7rjgZkKICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKXsKICAgICAgICAvLyBsb25nIGxvbmflnovjgpLlh7rlipvjgZnjgovjgZ/jgoHjgasgJWxsZCDjgpLkvb/nlKgKICAgICAgICBwcmludGYoImElMDJkOiAlbGxkXG4iLCBpLCByZWMoaSkpOwogICAgICAgIAogICAgICAgIGlmICgoaSArIDEpICUgNSA9PSAwKSB7CiAgICAgICAgICAgIHByaW50ZigiXG4iKTsgLy8gNemgheebruOBlOOBqOOBq+aUueihjAogICAgICAgIH0KICAgIH0KICAgIAoJcmV0dXJuIDA7Cn0=