递归乘法
递归乘法。 写一个递归函数,不使用 * 运算符,
实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例1:
输入:A = 1, B = 10
输出:10
示例2:
输入:A = 3, B = 4
输出:12
题解 递归解法
class Solution:
"""
解题思路: 递归法
1. A * B 可分为两种情况讨论, 以A为例:
1.当A为偶数时:可分解为 A // 2 * B + A // 2 * B
2.当A为奇数时:可分解为 A // 2 * B + A // 2 * B + B
"""
def multiply(self, A: int, B: int) -> int:
if A == 0:
return 0
if A == 1:
return B
# 添加备忘录 解决重复计算问题
half = self.multiply(A // 2, B)
if A % 2 == 0:
return half + half
else:
return half + half + B