美文网首页
一个连续乘法的算式多少种计算方法

一个连续乘法的算式多少种计算方法

作者: 雁阵惊寒_zhn | 来源:发表于2020-11-11 11:16 被阅读0次

    题目

    一个连续乘法的算式,只考虑结合律,不考虑交换律,共有多少种计算方法?
    例如:a*b*c*d,可以如a*b*(c*d),a*(b*c)*d等

    解析思路

    递归实现。只考虑结合律,结合律就是将算式进行拆分,拆分为多个不同的子算式。首先将完整的算式拆分为两个独立的子算式,两个子算式分别计算有多少种计算方法,两个子算式结果相乘就是完整算式的有多少种计算方法。子算式再继续拆分为子子算式,直到子算式只剩下一个乘数,或者两个乘数,那么此时计算方法为1。

    代码

    //输入乘法算式乘数的个数
    public int mulDistribution(int number){
        //如果乘数个数小于等于0,返回0。
        if (number <= 0){
            return 0;
        }
        //如果乘数个数为1或2,返回1。
        if (number < 3){
            return 1;
        }
        //递归实现,每一个算式都拆分为两个子算式递归结果的乘积
        int total = 0;
        for (int i = 1; i < number; i++){
            total = total + mulDistribution(i) * mulDistribution(number - i);
        }
        return total;
    }
    

    相关文章

      网友评论

          本文标题:一个连续乘法的算式多少种计算方法

          本文链接:https://www.haomeiwen.com/subject/dnkgmktx.html