こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

出口(戻り値) 再帰処理

情報処理を独学で勉強しています。4月の初級シスアドに合格して,元々初級シスアドの午前を基本情報技術者の参考書で勉強していて,基本情報技術者の午前が70%ぐらいとれるようになってきたので,午後の勉強を「基本情報技術者 午後 完全合格教本」という本を買って始めました。
タイトルの「出口(戻り値)」この関数を呼び出したプログラムに戻り値を返すというのが再帰処理(再帰を使わないn!プログラム)の中でどうゆう処理をしているかが分かりません。
○ プログラム名:再帰なしnの階乗
○ 整数型 : 答
・答 ← Fa(5)
・表示命令(答)     {答の内容を表示する}
○関数名: Fa(n)
○整数型: ANS
▲ n>1
| Yes
|    ・Ans←n*Fb(n-1)
◇ No  
|    ・Ans←1

・出口(Ans)   (1)
これがFa(n)がFb(n),Fc(n),Fd(n),FbがFcFdFe同じのが3回続きます。その後に
○関数名: Fe(n)
○整数型: ANS
▲ n=1
| Yes
|    ・Ans←1

・出口(Ans)   (2)
となります。
参考書の実行の様子というのを見ると、最初は出口(Ans)をずっととばして最後の(2)のところまで来て戻るみたいになっているんですが、何がどこに戻ってどうなっているか、私の知っている知識の中で説明ができる方、よろしくお願いします。

投稿日時 - 2007-05-16 10:27:09

QNo.3004164

すぐに回答ほしいです

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

Ans←n* Fb(n-1)
の Fb(n-1)= Ans と思ってください。
つまり Fe(1) で 出口(Ans) の返し値処理を抜けると
Fd>Fc>Fb>Fa の逆順で
n * (n * (n * (n * (n * 返り値))))
となると思われますよ。
つまり呼び出し元の F?(n)のオペランドに戻ってきている
と考えればいいでしょう。

投稿日時 - 2007-05-16 20:24:05

お礼

補足質問をしようと文章を考えているうちになんとなく分かってきました。ありがとうございました。

投稿日時 - 2007-05-17 10:33:21

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問