📅  最后修改于: 2023-12-03 15:39:14.515000             🧑  作者: Mango
如何实现将两个整数相乘而不使用乘法、除法和按位运算运算符,并且不使用循环?
本题通常采用递归的方式实现,基本思路如下:
其中,第3和第4点是本题实现的核心。
因为将一个偶数分成一半,每一半中的数值是相等的,所以我们只需要一次乘法计算就能得到结果,这个结果可以通过递归的方式进行求解。
而将一个奇数分成一半,需要额外的一步操作,即将 b 减1 再除以2,同时将 a 乘以 (b-1)/2。
def multiply(a, b):
if b == 0:
return 0
elif b == 1:
return a
elif b % 2 == 0:
return multiply(a, b//2) + multiply(a, b//2)
else:
return a + multiply(a, (b-1)//2) + multiply(a, (b-1)//2)
# 测试代码
print(multiply(3, 4)) # 输出:12
print(multiply(5, 7)) # 输出:35
print(multiply(0, 7)) # 输出:0