関数の中で、再びその関数自身を呼び出すことができ、こういう関数を再帰関数と呼ぶ・・・。
これを使うことで、ループ処理をより簡潔に記述できる・・・。
渡された値を階乗した値を返す関数factorialを定義する・・・。
その前にmain関数は、
こうなっている・・・。
入力された値をfactorialに渡して、階乗した値が返ってくるのでそれを出力・・・。
factorialは再帰関数で表現すると、
こんな感じで、0より大きい場合は、n * factorial(n - 1)を返し、0の場合は、1を返す・・・。
このようにfor, while, do-whileを使わずに繰り返し処理が書ける・・・。
実行すると、
$ vi recursion.c $ gcc recursion.c -o recursion $ ./recursion x: 1 factorial(1) = 1 $ ./recursion x: 2 factorial(2) = 2 $ ./recursion x: 3 factorial(3) = 6 $ ./recursion x: 4 factorial(4) = 24 $ ./recursion x: 5 factorial(5) = 120 $
こんな感じで階乗した値が返ってくる・・・。