fork download
  1. #include <stdio.h>
  2.  
  3. /* 階乗を求める再帰関数 */
  4. int fact(int n)
  5. {
  6. /* 関数が呼び出されたことを表示 */
  7. printf("関数が開始されました。引数は %d です。\n", n);
  8.  
  9. /* 終了条件 */
  10. if (n == 1) {
  11. printf("n = 1 なので 1 を返します。\n");
  12. return 1;
  13. }
  14.  
  15. /* 再帰呼び出し */
  16. int result = n * fact(n - 1);
  17.  
  18. /* 戻り値を表示 */
  19. printf("n = %d のとき、戻り値は %d です。\n", n, result);
  20.  
  21. return result;
  22. }
  23.  
  24. int main(void)
  25. {
  26. /* 引数10で関数を呼び出す */
  27. int answer = fact(10);
  28.  
  29. /* 結果を表示 */
  30. printf("10! = %d\n", answer);
  31.  
  32. return 0;
  33. }
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
関数が開始されました。引数は 10 です。
関数が開始されました。引数は 9 です。
関数が開始されました。引数は 8 です。
関数が開始されました。引数は 7 です。
関数が開始されました。引数は 6 です。
関数が開始されました。引数は 5 です。
関数が開始されました。引数は 4 です。
関数が開始されました。引数は 3 です。
関数が開始されました。引数は 2 です。
関数が開始されました。引数は 1 です。
n = 1 なので 1 を返します。
n = 2 のとき、戻り値は 2 です。
n = 3 のとき、戻り値は 6 です。
n = 4 のとき、戻り値は 24 です。
n = 5 のとき、戻り値は 120 です。
n = 6 のとき、戻り値は 720 です。
n = 7 のとき、戻り値は 5040 です。
n = 8 のとき、戻り値は 40320 です。
n = 9 のとき、戻り値は 362880 です。
n = 10 のとき、戻り値は 3628800 です。
10! = 3628800