Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python入門】再帰関数を使って10進数を2進数に変換する方法

10進数を2進数に変換する基本の考え方

10進数を2進数に変換するには、対象の数を2で繰り返し割り算をし、そのたびに得られる余りを記録します。そして計算が終わった後、余りを逆順に出力すると、それが目的の2進数表現になります。

この一連の処理は、再帰(リカージョン)を使うことで非常に簡潔に実装できます。以下がその再帰的な解法です。

再帰を使ったPythonコード

def tobin(x):
    if x > 1:
        tobin(x // 2)
    print(x % 2, end='')

num = int(input('enter a number'))
tobin(num)

上記のコードを実行して、実際の動作を確認してみましょう。

実行結果の例

enter a number 25
11001
enter a number 16
10000

コードのポイント解説

  • 再帰呼び出し: 引数 x が1より大きい間、x // 2(2で割った商)を引数にして自分自身を呼び出します。これにより、数が1になるまで分割処理が続きます。
  • 余りの出力: 再帰呼び出しから戻ってきた後に x % 2(2で割った余り)を出力します。復帰する順序のおかげで、余りは自動的に逆順(上位の桁から)表示されます。
  • end='' の指定: print() 関数の end='' オプションにより、改行せずに数字を1行につなげて出力できます。

処理の流れ(入力:25の場合)

25を入力したときの再帰の動きを順番に追ってみましょう。

  • tobin(25) → tobin(12) を呼び出す
  • tobin(12) → tobin(6) を呼び出す
  • tobin(6) → tobin(3) を呼び出す
  • tobin(3) → tobin(1) を呼び出す
  • tobin(1) → 余り「1」を出力して終了
  • 呼び出し元へ復帰しながら 1 → 1 → 0 → 0 → 1 の順に出力され、結果として「11001」が表示されます。

このように再帰構造を利用すると、余りの順序を反転させるためのリストなどの補助的なデータ構造が不要になり、とてもエレガントなコードになります。再帰の考え方に慣れるための練習題材としても最適なので、ぜひ手を動かして試してみてください。

  1. Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例

    この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g

  2. Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ

    この記事では、10進数で表された数値を2進数に変換するPythonプログラムについて、その考え方と具体的な実装方法をわかりやすく解説します。 問題文 ある整数が与えられたとき、その数値を2進数に変換します。例えば、10進数の「35」は2進数では「100011」と表現されます。 アプローチ1:再帰を使った解法 再帰処理を利用すると、シンプルなコードで10進数を2進数に変換できます。基本的な流れは以下の擬似コードのとおりです。 DecToBin(num):     if num > 1:      &n