読者です 読者をやめる 読者になる 読者になる

再帰関数

関数の中で、再びその関数自身を呼び出すことができ、こういう関数を再帰関数と呼ぶ・・・。
これを使うことで、ループ処理をより簡潔に記述できる・・・。

渡された値を階乗した値を返す関数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
$

こんな感じで階乗した値が返ってくる・・・。

Sample/recursion.c at master · bg1bgst333/Sample · GitHub