とくにあぶなくないRiSKのブログ

危ないRiSKのブログだったかもしれない。本当はRiSKだけどググラビリティとか取得できるIDの都合でsscriskも使ったり。

基数変換(2)

123を2進表記するためには,次のような計算をします。

2)123 - 1
2) 61 - 1
2) 30 - 0
2) 15 - 1
2) 7 - 1
2) 3 - 1
2) 1 - 1
0

  1. 2で割り,余りを横に書く。
  2. それを商が 0 になるまで続ける。
  3. 余りを下から読む。
  4. 上記であれば1111011が123を2進法で表現する結果となる。

ところで前回(id:RiSK:20051020)紹介したPrintAdicは再帰関数でした。一般に再帰関数は次のようになっています。(ちなみに処理Bがないこともあります。それを特別に末尾再帰と呼びます。)

戻り値 Recur(引数)
{
// 処理A

if (まだ再帰) Recur(引数); // 再帰

// 処理B
}


もう一度 PrintAdic (id:RiSK:20051020)をごらんください。PrintAdic 内で PrintAdic を呼んでおり,再帰関数であることが分かるでしょう。

次回は Recur が何度も呼ばれたときに処理Aと処理Bがどのように行われるのか説明します。