我试图在不将S和T这两个数字转换成以10为基数的情况下添加两个二进制数,我很难将进位合并到代码中。另外,如果一个二进制数比另一个长,我也不知道该怎么办。在
def addB(S,T):
'''adds binary number without converting to base 10'''
def addBhelper(S,T,carry):
if S=='' and T=='':
return ''
if S[-1] + T[-1]+carry==0:
return addBhelper(S[:-1],T[:-1],0) + str((carry+int(S[-1]) + int(T[-1]))% 2)
if S[-1] + T[-1]+carry==1:
return addBhelper(S[:-1],T[:-1],1) + str((carry+int(S[-1]) + int(T[-1])) % 2)
if S[-1] + T[-1]+carry==2:
return addBhelper(S[:-1],T[:-1],2) + str((carry+int(S[-1]) + int(T[-1])) % 2)
if S[-1] + T[-1]+carry==3:
return addBhelper(S[:-1],T[:-1],2) + str((carry+int(S[-1]) + int(T[-1])) % 2)
return addBhelper(S,T,0)
----已更新以修复代码格式
让我们从第一部分开始,确保两个字符串的长度相同。因为它们是数字,你只需要'0'填充较短的数字
对于运载工具,您的运载工具应如下所示:
^{pr2}$希望有帮助
下面是一个更简洁的版本,它使用了一些Python语法:
c=0
的默认值来删除内部函数a = a or '0'
将a
设置为'0'
,如果它是{n//2
拿到手相关问题 更多 >
编程相关推荐