列表

详情


面试题 08.05. 递归乘法

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

示例1:

 输入:A = 1, B = 10
 输出:10

示例2:

 输入:A = 3, B = 4
 输出:12

提示:

  1. 保证乘法范围不会溢出

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int multiply(int A, int B) { } };

golang 解法, 执行用时: 0 ms, 内存消耗: 1.9 MB, 提交时间: 2021-05-31 17:54:06

func multiply(A int, B int) int {
    ans := 0
    for B > 0 {
        if B & 1 == 1 {
            ans += A
        }
        B >>= 1
        if B > 0 {
            A = A << 1
        }
    }
    return ans
}

上一题