Я пытаюсь написать функцию, которая добавляет два двоичных числа без преобразования. Мои коды следующие: я не знаю, почему это не работает.Python 3.2.5 Recursion
def add_bitwise(s1, s2):
"""take two strings s1 and s2 that represent binary numbers,
compute the sum of the numbers, and return that sum in the form of a string
that represents a binary number
"""
if s1 == "":
return s2
elif s2 == "":
return s1
else:
rest = add_bitwise(s1[:-1], s2[:-1])
if int(s1[-1]) + int(s2[-1]) == 0:
return rest + "0"
elif int(s1[-1]) + int(s2[-1]) == 1:
return rest + "1"
return add_bitwise(s1[:-1], str(int(s2[:-1])+1)) + str(int(s1[-1]) + int(s2[-1]) - 2)
Так что я пытаюсь использовать подход справа налево. Если оба последних числа s1 и s2 равны «0», функция возвращает «0» и продолжает; если одно из последних чисел s1 или s2 равно «1», а второе последнее число «0», функция возвращает «1» и продолжает. Часть, которая не работает, - это когда оба последних числа «0», то есть ситуация, когда требуется бит переноса.