HOME»ソフトウェア開発技術者平成19年春期»午前問14
ソフトウェア開発技術者平成19年春期 午前問14
問14
非負の整数xに対して,次のとおりに定義された手続きF(x)がある。F(10)で印刷される結果はどれか。ここで,p div qは pをqで割った商の部分,p mod qは pをqで割った剰余,print(p)は pの値を印刷することを表す。印刷は,左から右に行う。
F(x) {
if (x>0) {
F(x div 8);
print(x mod 8);
}
}
if (x>0) {
F(x div 8);
print(x mod 8);
}
}
- 012
- 10
- 12
- 21
分類
テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム
正解
ウ
解説
F(x)が再帰呼び出しになっていることに注意して処理の流れをトレースします。
F(10) {
(10>0なので処理を実行)
F(10 div 8) {
//F(1) start
(1>0なので処理を実行)
F(1 div 8) {
//F(0) start
(0>0は偽なので何も実行されない)
}
//F(0) end
print(1 mod 8); //1を出力
}
//F(1) end
print(10 mod 8); //2を出力
}
//F(10) end
したがって出力される文字列は「12」になります。(10>0なので処理を実行)
F(10 div 8) {
//F(1) start
(1>0なので処理を実行)
F(1 div 8) {
//F(0) start
(0>0は偽なので何も実行されない)
}
//F(0) end
print(1 mod 8); //1を出力
}
//F(1) end
print(10 mod 8); //2を出力
}
//F(10) end