有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java当一个或两个因子都为负时,如何进行递归乘法?

public static int multiply2(int num1, int num2) {
    if (num1 == 0 || num2 == 0) {
        return 0;
    }

    else {
        return num1 + multiply2(num1, num2 - 1);
    }

}

我刚刚意识到,制作一个程序,可以确定两个数字的乘积,一个或两个都是负数,这会很有趣。我想用递归乘法(基本上是重复加法)来实现。谁能帮帮我吗?谢谢


共 (2) 个答案

  1. # 1 楼答案

    如果数字为-ve,则需要添加。如果你看到我们只添加第一个数,第二个数的条件是0。所以如果是负的do +1如果是正的do -1

            else if (num2 < 0)
                return -num1 + multiply2(num1, num2 + 1);
             else
                return num1 + multiply2(num1, num2 - 1);
    
        System.out.println(multiply2(5, -6));-->-30
        System.out.println(multiply2(5, 6));-->30
    
  2. # 2 楼答案

    你可以测试它是否为负值,然后用减法代替加法:

    public static int multiply2(int num1, int num2) {
        if (num1 == 0 || num2 == 0) {
            return 0;
        }
        else if(num2 > 0){
            return num1 + multiply2(num1, num2 - 1);
        }
        else{
            return -num1 + multiply2(num1, num2 + 1);
        }
    }