LeetCode 面试题 08.05. 递归乘法

递归乘法

描述

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

一 、带返回参数的递归

class Solution {
    public int multiply(int A, int B) {

        return to_multiply(A, B);

    }

    private int to_multiply(int a, int b) {
        int sum = 0;
        //terminate
        if (b <= 0) {
            return 0;
        }
        //process login
        sum += a;
        //drill into
        return sum + to_multiply(a, b - 1);
        //revert
    }
}

 二、 不带返回参数的递归


class SolutionMultiply {

private static int C;

public int multiply(int A, int B) {
to_multiply1(A, B, 0);
return C;

}


private void to_multiply1(int a, int b, int res) {

//terminate
if (b <= 0) {
C=res;
return;
}

res += a;
//drill into
to_multiply1(a, b - 1, res);
//revert
}
}
呵呵
原文地址:https://www.cnblogs.com/jiazhiyuan/p/13289782.html