前の問題次の問題

※ 著作権上の問題により掲載を取りやめています。

---
[出典:ウェブデザイン技能検定 1級 令和元年度(2019) 第3回試験 問23]

解答

正解
3
取組履歴
ログインすると履歴が残ります
解説
解説のユーザー評価:未評価
単純な再帰関数の挙動についての問題ですので、落ち着いて考えれば自然と答えを導くことができます。

再帰関数とは、関数定義の中で自分自身の関数を呼びだし、終了条件となるまで再帰的に処理するプログラムです。

問題の場合、192を8で割っていき、整数化したときに0になるまで繰り返します。
整数化とは cast の事を指し、phpでは (int) と記述します。また、変換元の数字が浮動小数点型の場合は切り捨てとなります。
つまり、8以下の数字となった場合、8で割った結果は0となります。

プログラムを追いかけると、
① 192を8で割ると、24となり、elseに入ります。また、2回目のto_oct へ遷移します。注意点として、この時まだ次の行のprintに達していません。
② 24を8で割ると、3となり、elseには入ります。また、3回目のto_octへ遷移します。①と同様に、この時まだ次の行のprintに達していません。
③ 3を8で割り整数化すると 0になり、ifの条件を満たすので $n%8 を出力します。3/8の余りですので、「3」が出力されます。
④ ②に戻り、print処理が行われ、24%8 を出力します。余りは0ですので「0」が出力されます。
⑤ ①に戻り、print処理が行われ、192%8 を出力します。余りは0ですので「0」が出力されます。

結果、300 が表示されます。
ログインすると解説の投稿・編集が可能となります。
個人メモ(他のユーザーからは見えません)
メモを残すにはログインが必要です
コメント一覧
  • まだコメントがありません
※ コメントには[ログイン]が必要です。