平成19年春期試験問題 午前問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);
 }
}

  • 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」になります。

Pagetop