递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。
示例1:
输入:A = 1, B = 10 输出:10
示例2:
输入:A = 3, B = 4 输出:12
提示:
保证乘法范围不会溢出
关键是想清楚递推式,f(a,b)=f(a-1,b)+b f(1,b)=b
class Solution(object):
def multiply(self, A, B):
"""
优化,交换a,b,让小值在前,减少递归次数
"""
A, B = (A, B) if A < B else (B, A)
if A > 0:
return B + self.multiply(A-1, B)
return 0