質問: 再帰関数について 非負の整数nに対して次のように定義された 関数f(n),g(n)がある。f(5)の値はいくらか。 関数 f(n):if n=<1 then return1 else return n×g(n-1) g(n):if n=0 then return0 else return n+f(n-1) (1)50 (2)65 (3)100 (4)120 正解 (2)65 以下解説 f(5):5×g(5-1)=5×(g(4)) =5×(4+f(4-1))=5×(4+(f(3))) =5×(4+(3×g(3-1)))=5×(4+(+3×g(2)))) =5×(4+(3×(2+f(2-1))))=5×(4+(+3×(2+f(1))))) =5×(4+(3×(2+(1)))) =65 再帰関数についての知識が皆無なので 教えて頂きたいのですが、なぜ=後の5×は残るのでしょうか。 そもそも再帰関数とは、どんなことを言っているのでしょうか。 具体例を挙げて頂くか、分かり易いurlを教えて頂けると幸いです。 お手数ですが、上記について1つ1つ丁寧に解説して頂きたいです。 大変ご迷惑な質問かと思いますが、分かる方おられましたら、 お手数ですが、ご教授お願いします。 以上、よろしくお願い致します。
回答: 再帰関数の動作原理を知るためには、スタックの概念と関数呼び出し時に引数やローカル変数がどの様にスタックを使用しているかを理解する必要があります。 この辺を理解した上で、もう一度再帰関数の解説を良く読んでみることをお勧めします。 それでも理解できない部分があれば補足で挙げて下さい。