面试题 08.05. 递归乘法

    科技2024-06-24  69

    递归乘法。 写一个递归函数,不使用 * 运算符, 实现两个正整数的相乘。可以使用加号、减号、位移,但要吝啬一些。

    示例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

     

    Processed: 0.015, SQL: 8