Java中使用递归的乘法

Java中使用递归的乘法,java,recursion,Java,Recursion,我是编程新手,我正在用Java编写一个使用递归的简单代码。我想展示两个数字的乘积(从头到尾)。该方法的返回是从开始到结束的数字相乘。(例如:如果数字是1和3,那么我希望该方法返回6。 我设法做了递归,但我不确定代码是否有效。这是我到目前为止的代码。谢谢 public classÜbungsblattSieben{ 公共静态void main(字符串[]args){ System.out.println(从开始到结束(1,3)的倍数); } 公共静态整数倍数fromStartToEnd(整数开始,

我是编程新手,我正在用Java编写一个使用递归的简单代码。我想展示两个数字的乘积(从头到尾)。该方法的返回是从开始到结束的数字相乘。(例如:如果数字是1和3,那么我希望该方法返回6。 我设法做了递归,但我不确定代码是否有效。这是我到目前为止的代码。谢谢

public classÜbungsblattSieben{
公共静态void main(字符串[]args){
System.out.println(从开始到结束(1,3)的倍数);
}
公共静态整数倍数fromStartToEnd(整数开始,整数结束){
如果(开始==结束){
返回端;
}否则{
返回开始*从开始到结束的倍数(++开始,结束);
}
}
}
您的代码与递归乘法一样有效。做得好

尽管如此,以下是一些注意事项:

  • 您可以编写
    start+1
    而不是
    ++start
    。通常更易于阅读和理解。此外,您不必更改
    start
    变量本身,只需向方法调用传递更大的数字即可

  • 您可能还希望正确缩进代码(只需点击IDE中的自动格式化键)

  • 我还建议将您的方法重命名为
    multiplyFromTo
    ,但这是一个非常主观的注释

总之,您的代码将如下所示:

public class ÜbungsblattSieben {
    public static void main (String[] args) {
        System.out.println(multiplyFromStartToEnd(1, 3));
    }

    public static int multiplyFromTo(int start, int end) {
        if (start == end) {
            return end;
        } else {
            return start * multiplyFromStartToEnd(start + 1, end);
        }
    }
}
int result = 1;
for (int i = start; i <= end; i++) {
    result *= i;
}
System.out.println(result);

作为参考,以下是迭代版本的外观:

public class ÜbungsblattSieben {
    public static void main (String[] args) {
        System.out.println(multiplyFromStartToEnd(1, 3));
    }

    public static int multiplyFromTo(int start, int end) {
        if (start == end) {
            return end;
        } else {
            return start * multiplyFromStartToEnd(start + 1, end);
        }
    }
}
int result = 1;
for (int i = start; i <= end; i++) {
    result *= i;
}
System.out.println(result);
int结果=1;

对于(int i=start;i您的问题到底是什么,您所说的“有效”是什么意思?它做了您描述它应该做的事情。可能需要改进的一点是:检查
end>=start
(试试这个:如果
end
小于
start
,会发生什么情况)。如果您想执行递归-是的,这是正确的实现