码:
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到下一侧但我无法弄清楚如何在第二个递归调用中执行此操作 . Sum rest是正常的递归调用,然后是递归调用以携带数字,然后是0.函数必须保持设计但递归调用需要修复 .