再帰関数について
社内勉強会で再帰関数
という言葉が出たので、全く知らなかったので、調べました。
意味
関数の中で自分自身を呼び出すこと
です。
そのため、再帰関数と呼ばれているんですね。
サンプル
階乗計算が例にあったので、それを使います。
4 x 3 x 2 x 1
こんなやつですね。
def factorial(n) if n == 1 1 else n * factorial(n-1) end end
nを入れて、それを-1ずつして、1になったら1を返して、処理を終了させます。
そうじゃない場合は、永遠に自分自身を返すことになります。
ここでn == 1
がないと、処理が終わらなくてエラーになります。
:in `factorial': stack level too deep (SystemStackError) from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' ... 8723 levels... from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:2:in `factorial' from effective.rb:5:in `<main>'
処理がミスったらドツボにはまりそうだなって感じがしました。
単語の意味が知らなかったので、簡単な説明になります。