需要获取没有+
运算符的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/