
基本情報技術者試験詳しい方へ、回答求む
[問題]三つのスタックA, B, Cのいずれの初期状態も[1, 2, 3]であるとき、再帰的に定義された関数f()を呼び出して終了した後のBの状態はどれか。ここで、スタックが、[a1, a2, …, an-1]の状態のときにanをpushした後のスタックの状態は[a1, a2, …, an-1, an]で表す。
f(){
Aが空ならば {
何もしない。
} そうでない場合 {
Aからpopした値をCにpushする。
f()を呼び出す。
Cからpopした値をBにpushする。
}
}
こう言う問題があるんですけど、
f()を呼び出す。の処理が終わるところ(再帰的呼び出しが終わるところ)までは理解できるんです。
そのあとのCからpopした値をBにpushする。の処理が3回行われるのがなぜかわかりません。
おしえてください、、、
No.4
- 回答日時:
A[1,2,3]
B[1,2,3]
C[1,2,3]
f()が呼び出される(1回目始まり)
A空でないので、Aからpopした値をCにpushする。
A[1,2]
B[1,2,3]
C[1,2,3,3]
f()が呼び出される(2回目始まり)
A空でないので、Aからpopした値をCにpushする。
A[1]
B[1,2,3]
C[1,2,3,3,2]
f()が呼び出される(3回目始まり)
A空でないので、Aからpopした値をCにpushする。
A[]
B[1,2,3]
C[1,2,3,3,2,1]
f()が呼び出される(4回目始まり)
A空なので何もしない。
f()4回目終わり。
f()3回目の続き:Cからpopした値をBにpushする。
A[]
B[1,2,3,1]
C[1,2,3,3,2]
f()3回目終わり。
f()2回目の続き:Cからpopした値をBにpushする。
A[]
B[1,2,3,1,2]
C[1,2,3,3]
f()2回目終わり。
f()1回目の続き:Cからpopした値をBにpushする。
A[]
B[1,2,3,1,2,3]
C[1,2,3]
f()1回目終わり。
No.1
- 回答日時:
最初にf()が呼び出されて、その後Aが空になるまで再帰的にf()が3回呼び出されるが、それぞれ呼び出されるf()の処理をf0, f1, f2, f3と呼ぶとします。
f3ではAは空になっているので何も起きず、単にf2に戻るだけで、そこでB->Cの転送が行われてf2が終わります。その後f1の処理に移り、同様にB->Cの転送が行われf1が終わって、f0に処理が移りまたB->Cの転送が行われ全処理が終了。
つまり、B->Cは3回行われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語プログラミングで、多項式...
-
VBA:CSVファイルの読出し手法...
-
VC++2010 GDIオブジェクトの解...
-
win10で、正確な待ち時間の作り方
-
逆コンパイルと逆アセンブルの...
-
Macターミナルで実行中のプログ...
-
powershell を使いカレントディ...
-
アプリケーションが終了するま...
-
COBOLのS9タイプからXタイプへ...
-
.NetのBackgroundWorkerクラス...
-
メモリが不足しています(VBA)
-
スレッドにて同一メモリの書き...
-
プロセスIDからウィンドウハ...
-
openGLで物体を半透明にして表...
-
フレームワーク「4.8.1」で、[S...
-
OSPFでプロセスを分ける意義に...
-
if ( a & b == b )
-
CWnd::OnTimerのスレッドの取得
-
Winsockで接続待ちタイムアウト...
-
C言語からC#への変換ツール
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
win10で、正確な待ち時間の作り方
-
小数点を含む数値かどうか判断...
-
Excelでのセル内容の高速消去方法
-
If Not c Is Nothing Then ~延...
-
for文の処理に時間がかかってい...
-
Excel VBAにて、2GB超の点群デ...
-
VB 電卓 メモリー機能
-
絶対パスの取得について
-
DirectShowでのfilterの作り方
-
wavelet変換のソフト
-
エクセルVBA 時間抜けの取得
-
Excel(VBA)でSetTimer関数を使...
-
プログラム上のCPU稼働率低減に...
-
ノットイコールを教えて下さい
-
テキストファイルの空行をスキ...
-
.netからexcel操作の処理速度が...
-
SQLの速度をあげるには・・・
-
基本情報技術者試験詳しい方へ...
-
Excel VBA データ削除の高速化
-
VBA言語プログラミング
おすすめ情報
答え書くの忘れました。 [1,2,3,1,2,3]