需要在不使用+
运算符的情况下获得x和y的和
我用加法器求两个数的和。如果我们对x和y进行异或运算(x ^ y
),我们将得到不带进位的和。从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
您还必须改变进位:
这只解释了为什么你会以一个无休止的循环结束。您提出的加法算法有缺陷,请参见Thierry Lathuille的答案以了解正确的加法
您忘记了基本案例的一半:
印刷品
调试:
你错过了两个条件。如果b==0,则返回a。然后再移位进位
相关问题 更多 >
编程相关推荐