fork download
  1. #include <stdio.h>
  2.  
  3. // 3項間漸化式: a_n = a_{n-2} + a_{n-3}
  4. // 初期条件: a_0 = 3, a_1 = 0, a_2 = 2
  5. long long rec(int n) {
  6. // ベースケース(初期条件)
  7. if (n == 0) {
  8. return 3;
  9. }
  10. if (n == 1) {
  11. return 0;
  12. }
  13. if (n == 2) {
  14. return 2;
  15. }
  16.  
  17. // 再帰ステップ(漸化式)
  18. // n >= 3 の場合: a_n = a_{n-2} + a_{n-3}
  19. return rec(n - 2) + rec(n - 3);
  20. }
  21.  
  22. int main(void) {
  23. int n = 50;
  24.  
  25. printf("--- 課題3: 数列 a_n = a_{n-2} + a_{n-3} (再帰版) ---\n");
  26.  
  27. // i=0 から i=50 まで繰り返し rec(i) を呼び出す
  28. for(int i = 0; i <= n; i++){
  29. // long long型を出力するために %lld を使用
  30. printf("a%02d: %lld\n", i, rec(i));
  31.  
  32. if ((i + 1) % 5 == 0) {
  33. printf("\n"); // 5項目ごとに改行
  34. }
  35. }
  36.  
  37. return 0;
  38. }
Success #stdin #stdout 0.02s 5320KB
stdin
Standard input is empty
stdout
--- 課題3: 数列 a_n = a_{n-2} + a_{n-3} (再帰版) ---
a00: 3
a01: 0
a02: 2
a03: 3
a04: 2

a05: 5
a06: 5
a07: 7
a08: 10
a09: 12

a10: 17
a11: 22
a12: 29
a13: 39
a14: 51

a15: 68
a16: 90
a17: 119
a18: 158
a19: 209

a20: 277
a21: 367
a22: 486
a23: 644
a24: 853

a25: 1130
a26: 1497
a27: 1983
a28: 2627
a29: 3480

a30: 4610
a31: 6107
a32: 8090
a33: 10717
a34: 14197

a35: 18807
a36: 24914
a37: 33004
a38: 43721
a39: 57918

a40: 76725
a41: 101639
a42: 134643
a43: 178364
a44: 236282

a45: 313007
a46: 414646
a47: 549289
a48: 727653
a49: 963935

a50: 1276942