fork download
  1. #include <stdio.h>
  2.  
  3. // 1. int型のグローバル変数 c を宣言する(呼び出し回数カウンタ)
  4. int c = 0;
  5.  
  6. /*
  7.  * 3項間漸化式:a_n = -6a_{n-1} - 9a_{n-2}
  8.  * 初期条件:a_1 = 1, a_2 = 2
  9.  *
  10.  * @param n 求める項の番号
  11.  * @return 数列の第 n 項の値
  12.  */
  13. int rec(int n) {
  14. // 2. rec関数内でインクリメントを行い、recの実行ごとにcを増やす
  15. c++;
  16.  
  17. // 初期条件
  18. if (n == 1) {
  19. return 1;
  20. }
  21. if (n == 2) {
  22. return 2;
  23. }
  24.  
  25. // 漸化式による再帰計算
  26. return -6 * rec(n - 1) - 9 * rec(n - 2);
  27. }
  28.  
  29. int main(void) {
  30. int n = 5; // 求める項
  31.  
  32. // rec関数が呼ばれる前にcを初期化(今回はグローバル変数宣言時に0)
  33.  
  34. // 数列の項の値を計算し、表示
  35. printf("数列a%dの値は%d\n", n, rec(n));
  36.  
  37. // 3. main関数内でprintfを追加して、cの値を表示させる
  38. printf("このときrecの呼び出し回数は%d\n", c);
  39.  
  40. return 0;
  41. }
  42.  
Success #stdin #stdout 0.01s 5288KB
stdin
Standard input is empty
stdout
数列a5の値は-459
このときrecの呼び出し回数は9