アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下URLに記載されている問題です。

f ( n ) : if n ≦1 then return 1 else return n + f ( n - 1 )
この読み方が分かりませんでした。
また、「f (5)」の値が15になる過程も詳しく解説頂ける方、よろしくお願いいたします。

http://情報処理試験.jp/FE21a-am/k08.html

A 回答 (2件)

ご質問そのものではなく類似問題に対する解説ですが,解説ポイントはまったく同じです。



http://oshiete.goo.ne.jp/qa/6349909.html の私の過去の回答ANo.2

>イメージ程度の把握でよいのなら,下記URLの
>「nの階乗」のイラストを参照すればよいでしょう。

で指示したイラストをご覧いただければ,
4→3→2→1と再帰関数を呼び出し続ける段階では,数値をスタックに積むだけで加算はおこなわれず,
1→2→3→4と再帰関数を戻り(return)続ける段階で,加算がおこなわれてることがイメージできるでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/06/12 22:24

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が返されます。

この回答への補足

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

よろしくお願いいたします。

補足日時:2011/06/12 16:36
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/06/12 16:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!