Рекурсивный перевод числа в двоичную систему счисления

Описание задачи

Программа принимает число и переводит его в двоичную систему счисления с использованием рекурсии.

Решение задачи

  1. Задаем рекурсивную функцию, которая может принимать в качестве аргумента число.
  2. Принимаем от пользователя число и передаем его в качестве аргумента в рекурсивную функцию.
  3. В самой функции в качестве базового условия рекурсии задаем равенство входящего аргумента нулю. В этом случае функция возвращает переменную, в которую до начала работы функции был помещен пустой список.
  4. В противном случае в список добавляется остаток от деления аргумента на 2, а затем снова вызывается эта же функция, в которую в качестве аргумента передается результат целочисленного деления на 2.
  5. Далее мы переворачиваем список и выводим его на экран при помощи цикла for.
  6. Конец

Исходный код

Ниже дан исходный код, который переводит число в двоичную систему счисления при помощи рекурсии. Результаты работы программы также даны ниже.

l = []
def convert(b):
    if (b == 0):
        return l
    dig = b % 2
    l.append(dig)
    convert(b // 2)
a = int(input("Введите число: "))
convert(a)
l.reverse()
print("Двоичная форма числа:")
for i in l:
    print(i)

Объяснение работы программы

  1. Создается переменная l, которая инициируется пустым списком.
  2. Определяется рекурсивная функция convert(), которая в качестве аргумента принимает число.
  3. В самой функции определяется базовое условие рекурсии. Оно состоит в равенстве аргумента функции 0. В этом случае функция возвращает сформированный рекурсивным образом список l.
  4. В противном случае каждая цифра числа переводится в двоичный вид и добавляется в список в виде 0 или 1. А функция вызывается еще раз с аргументом, который был получен из первоначального аргумента посредством целочисленного деления на 2.
  5. Затем список инвертируется посредством функции reverse() и выводится на экран с помощью цикла for.

Результаты работы программы

Пример 1:
Введите число: 20
Двоичная форма числа:
1 0 1 0 0
 
Пример 2:
Введите число: 7
Двоичная форма числа:
1 1 1