Код:Как переносить цифру при выполнении двоичного добавления?
def add_bitwise(b1, b2):
'''Adds two binary numbers.'''
if b1 == '':
return b2
elif b2 == '':
return b1
else:
sum_rest = add_bitwise(b1[:-1],b2[:-1])
if b1[-1] == '0' and b2[-1] == '0':
return sum_rest + '0'
elif b1[-1] == '1' and b2[-1] == '0':
return sum_rest + '1'
elif b1[-1] == '0' and b2[-1] == '1':
return sum_rest + '1'
elif b1[-1] == '1' and b2[-1] == '1':
return sum_rest + add_bitwise(b2[:-1],'1') + '0'
Так что я должен сделать эту функцию, которая принимает два двоичных чисел и добавляет их. Это нужно сделать с помощью рекурсии и не может преобразовать числа в десятичные, добавить, а затем преобразовать обратно в двоичный. Поэтому в базовых случаях говорят, что если одно двоичное число пусто, верните другое и наоборот. Затем для моего рекурсивного вызова, если два нуля добавлены, он возвращает 0 и рекурсивный вызов. Если добавлены 0 и 1, он добавляет один и рекурсивный вызов.
Теперь вот где я застрял. Два из них делают 0, а затем вы должны переносить 1 на следующую сторону, но я не могу понять, как это сделать во втором рекурсивном вызове. Суммирующий остаток - это нормальный рекурсивный вызов, затем следует рекурсивный вызов для переноса цифры, а затем в 0. Функция должна оставаться такой же, как она была разработана, но рекурсивный вызов должен быть исправлен.
Именно то, что я искал! Благодаря! – jmcnuggsmagic13