【題目描述】
遞歸乘法。 寫一個(gè)遞歸函數(shù)愤钾,不使用 * 運(yùn)算符, 實(shí)現(xiàn)兩個(gè)正整數(shù)的相乘候醒∧馨洌可以使用加號(hào)、減號(hào)倒淫、位移伙菊,但要吝嗇一些。
示例1:
輸入:A = 1, B = 10
輸出:10
示例2:
輸入:A = 3, B = 4
輸出:12
提示:
保證乘法范圍不會(huì)溢出
【解題思路】
A x B 就是B個(gè)A相加敌土。
這里優(yōu)化了一下镜硕,取A和B中,較大的max以及較小的min返干,做min次max相加可以節(jié)省運(yùn)算次數(shù)兴枯。
【代碼】
class Solution {
public int multiply(int A, int B) {
int min = A > B? B: A;
int max = A > B? A: B;
return mul(max, min);
}
private int mul(int max, int min) {
if (min == 0) {
return 0;
}
return max + mul(max, --min);
}
}
來源:力扣(LeetCode)
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)矩欠,非商業(yè)轉(zhuǎn)載請注明出處财剖。