python - python中没有+运算符的求和

标签 python python-3.x algorithm

需要获取没有+运算符的x和y的和。

我试图用加法器将两个数字求和,如果我们对x和y(x ^ y)进行xor,我们将得到求和而不加进位从x & y我们可以进行携带。要添加此进位求和,请再次调用add函数。但它没有给出答案。我的代码中的错误在哪里。

def add(a,b):
    if a == 0:
        return b
    return add(a^b, a&b)

x = 10
y = 20
print(add(10, 20))

错误:

File "main.py", line 4, in add

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 4, in add                                        

return add(a^b, a&b)                                                                                                                          File "main.py", line 2, in add                                        

if a == 0:                                                                                                                                  RuntimeError: maximum recursion depth exceeded in comparison

最佳答案

您还必须转移进位:

def add(a,b):
    if a == 0:
        return b
    if b == 0:
        return a
    return add(a^b, (a&b) << 1)

x = 3
y = 2
print(add(x, y))
# 5

关于python - python中没有+运算符的求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61848917/

相关文章:

python - 自动生成Click命令的所有帮助文档

python - 无法获得在 Tornado 中工作的 SSL 客户端证书

java - 我如何完成这个双向匹配程序?

javascript - 获取按天分组的时间

python - 为什么我的代码打印其他字符?密码

python - 如何只允许一个用户看到 "UpdateView"?

Python删除链表中的一个节点,只要访问该节点

python-3.x - 在 Altair 的等值区域上叠加状态轮廓

python - 如何将多个字典的列表合并到列表字典中?

python - 自定义 fuzzywuzzy 字符串匹配以编辑距离 <= 1