答え ウ
【解説】
問題のプログラムに番号を付与します。
F(x ){
if(x > 0){
F(x div 8);
print(x mod 8);
}
} |
… @
… A
… B
… C
… D
… E |
F(10)なので、Aの条件文は成立し、Bを行います。
Bの、
F(x div 8)を計算すると、10 div 8=1なので、Bの処理は
F(1)になります。(1回目の再帰)
F(1)の処理を行います。Aの条件文は成立し、Bを計算します。
Bの、
F(x div 8)を計算すると、1 div 8=0なので、Bの処理は
F(0)になります。(2回目の再帰)
F(0)の処理を行います。Aの条件文が成立しないので、F(0)は何もしないで抜けます。(2回目の再帰処理の終了)
2回目の再帰の続きを処理します。次は、F(1)のCの処理です。
Cの、
x mod 8を計算すると、1 mod 8=1なので、Cの処理は
1を印刷します。
これで、F(1)の処理を抜けます。(1回目の再帰処理の終了)
1回目の再帰の続きを処理します。次は、F(10)のCの処理です。
Cの、
x mod 8を計算すると、10 mod 8=2なので、Cの処理は
2を印刷します。
これで、F(10)の処理を抜けます。
印刷結果は、
12(ウ)になります。