アルゴリズム (全82問中60問目)

No.60

非負の整数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);
 }
}

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

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」になります。
© 2010-2018 応用情報技術者試験ドットコム All Rights Reserved.

Pagetop