• ベストアンサー

■ 再帰的な関数について ■

以下URLに記載されている問題です。 f ( n ) : if n ≦1 then return 1 else return n + f ( n - 1 ) この読み方が分かりませんでした。 また、「f (5)」の値が15になる過程も詳しく解説頂ける方、よろしくお願いいたします。 http://情報処理試験.jp/FE21a-am/k08.html

質問者が選んだベストアンサー

  • ベストアンサー
  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.2

ご質問そのものではなく類似問題に対する解説ですが,解説ポイントはまったく同じです。 http://okwave.jp/qa/q6349909.html の私の過去の回答ANo.2 >イメージ程度の把握でよいのなら,下記URLの >「nの階乗」のイラストを参照すればよいでしょう。 で指示したイラストをご覧いただければ, 4→3→2→1と再帰関数を呼び出し続ける段階では,数値をスタックに積むだけで加算はおこなわれず, 1→2→3→4と再帰関数を戻り(return)続ける段階で,加算がおこなわれてることがイメージできるでしょう。

noname#261434
質問者

お礼

参考になりました。 ご回答いただき、ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

f ( n ) : if n ≦1 then return 1 else return n + f ( n - 1 ) nを引数とする関数はnが1以下なら1を返し、1より大きければn+f(n-1)を返す。 f(5)の時、最初は 5+f(4) が返されます。 このとき f(4) が呼ばれて 4+f(3) が返されます。 このとき f(3) が呼ばれて 3+f(2) が返されます。 このとき f(2) が呼ばれて 2+f(1) が返されます。 このとき f(1) が呼ばれて 1 が返されます。 結局 f(5)→5+f(4+f(3+f(2+f(1)))) となり、 f(1) で1が返されるので、2+f(1) は3が返され、 f(2) で3が返されるので、3+f(2) は6が返され、 f(3) で6が返されるので、4+f(3) は10が返され、 f(4) で10が返されるので、5+f(4) は15が返されます。

noname#261434
質問者

お礼

早速のご回答ありがとうございます。

noname#261434
質問者

補足

最後に5+4+3+2+1と計算する理由が分かりませんでした。 「結局」以下に解説されている内容が、その計算する理由かと思いますが、そこの所をもう少し分かりやすく解説して頂けたら助かります。 よろしくお願いいたします。

すると、全ての回答が全文表示されます。

関連するQ&A