HOME»応用情報技術者試験掲示板»平成25年秋期 午前問8
投稿する
平成25年秋期 午前問8 [3415]
アルゴリズム苦手さん(No.1)
proc(n)
n=0 ならば戻る
そうでなければ
{
A nを印字する
B proc(n-1)を呼び出す
C nを印字する
}
を実行して戻る
基礎的な内容で申し訳ありません。ABCと行に番号をつけました。
n=5にし、ループして、n=0になった後、【n=0 ならば戻る】の【戻る】という表記の意味が分かりません。
解説を見るとproc(1)からproc(5)まで戻っていますのでprocを戻るのかと思うのですが。どこの文にnを1ずつ増やしていくと書いてあるのでしょうか。
また、proc(0)からproc(1)に戻った場合、Aで1を印字し、Bでproc(0)に戻りn=0なので、またproc(1)に戻って、Aで1を印字しと5,4,3,2,1,1,1,1,…とならないのでしょうか。
n=0 ならば戻る
そうでなければ
{
A nを印字する
B proc(n-1)を呼び出す
C nを印字する
}
を実行して戻る
基礎的な内容で申し訳ありません。ABCと行に番号をつけました。
n=5にし、ループして、n=0になった後、【n=0 ならば戻る】の【戻る】という表記の意味が分かりません。
解説を見るとproc(1)からproc(5)まで戻っていますのでprocを戻るのかと思うのですが。どこの文にnを1ずつ増やしていくと書いてあるのでしょうか。
また、proc(0)からproc(1)に戻った場合、Aで1を印字し、Bでproc(0)に戻りn=0なので、またproc(1)に戻って、Aで1を印字しと5,4,3,2,1,1,1,1,…とならないのでしょうか。
2022.05.17 10:03
nsさん(No.2)
★AP ブロンズマイスター
「戻る」というのはプログラミング言語での"return"にあたります。呼び出し元に戻って続きの処理を実行します。
Bの行でproc(n)からproc(n-1)を呼び出し、proc(n-1)の中で「戻る」とあった場合は、proc(n)に戻ってCの行を実行します。
proc(2)の例を書いてみます。
proc(2)
n=0ではない
(A)"2"を印字
(B)proc(1)を呼び出し
proc(1)
n=0ではない
(A)"1"を印字
(B)proc(0)を呼び出し
proc(0)
n=0なので、戻る
(C)"1"を印字
proc(1)を終了して戻る
(C)"2"を印字
proc(2)を終了して戻る
Bの行でproc(n)からproc(n-1)を呼び出し、proc(n-1)の中で「戻る」とあった場合は、proc(n)に戻ってCの行を実行します。
proc(2)の例を書いてみます。
proc(2)
n=0ではない
(A)"2"を印字
(B)proc(1)を呼び出し
proc(1)
n=0ではない
(A)"1"を印字
(B)proc(0)を呼び出し
proc(0)
n=0なので、戻る
(C)"1"を印字
proc(1)を終了して戻る
(C)"2"を印字
proc(2)を終了して戻る
2022.05.17 11:35
アルゴリズム苦手さん(No.3)
早速ご回答いただきまして、本当にありがとうございます!!!しかも分かりやすい言葉で。
まだ少し分からない部分がありまして。。
n=0ではない
(A)"1"を印字
(B)proc(0)を呼び出し
proc(0)
n=0なので、戻る
→ここではA Bに行っていないのは、既に実行済みと考えて飛ばして、Cに行っていると言うことでしょうか。
(C)"1"を印字
proc(1)を終了して戻る
(C)"2"を印字
proc(2)を終了して戻る
まだ少し分からない部分がありまして。。
n=0ではない
(A)"1"を印字
(B)proc(0)を呼び出し
proc(0)
n=0なので、戻る
→ここではA Bに行っていないのは、既に実行済みと考えて飛ばして、Cに行っていると言うことでしょうか。
(C)"1"を印字
proc(1)を終了して戻る
(C)"2"を印字
proc(2)を終了して戻る
2022.05.17 11:57
y4 kさん(No.4)
この投稿は投稿者により削除されました。(2022.05.17 13:45)
2022.05.17 13:45
y4 kさん(No.5)
アルゴリズム苦手さん
nsさんの示した例は、以下のようなイメージになります。
1 proc(2) 呼び出し
2 proc(1) 呼び出し
3 proc(0) 呼び出し・終了
4 proc(1) 終了
5 proc(2) 終了
1 proc(2)の処理内で A(1-A)を実行します。
2 1-Bとしてproc(1)を呼び出し、その処理内でA(2-A)を実行します。
3 2-Bとしてproc(0)を呼び出し、終了まで実行します
4 2-Cを実行して、proc(1)を終了します。
5 1-Cを実行して、proc(2)を終了します。
これでイメージが湧いたでしょうか?
nsさんの示した例は、以下のようなイメージになります。
1 proc(2) 呼び出し
2 proc(1) 呼び出し
3 proc(0) 呼び出し・終了
4 proc(1) 終了
5 proc(2) 終了
1 proc(2)の処理内で A(1-A)を実行します。
2 1-Bとしてproc(1)を呼び出し、その処理内でA(2-A)を実行します。
3 2-Bとしてproc(0)を呼び出し、終了まで実行します
4 2-Cを実行して、proc(1)を終了します。
5 1-Cを実行して、proc(2)を終了します。
これでイメージが湧いたでしょうか?
2022.05.17 13:46
アルゴリズム苦手さん(No.6)
分かりました!!!
1-5のところ、スペースでずらして分かりやすくしていただきありがとうございます!
prosをどんどん展開していって、0になったら【戻って】いるんですね!
理解できました!!
お二人とも、分かりやすく説明していただいてありがとうございました!!!!
1-5のところ、スペースでずらして分かりやすくしていただきありがとうございます!
prosをどんどん展開していって、0になったら【戻って】いるんですね!
理解できました!!
お二人とも、分かりやすく説明していただいてありがとうございました!!!!
2022.05.17 14:36