java - Java中使用递归的乘法

标签 java recursion

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

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

    public static int multiplyFromStartToEnd(int start, int end) {
        if (start == end) {
            return end;
        } else {
            return start * multiplyFromStartToEnd(++start, end);
        }
    }
}

最佳答案

您的代码与递归乘法一样有效。干得好。

也就是说,这里有一些注意事项:

  • 您可以编写 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);

显然,这比递归快得多。

关于java - Java中使用递归的乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66476329/

相关文章:

在 C 中使用递归创建二叉树

scala - Scala 中的并行递归记忆化

Python 递归读取数据

java - Maven Cucumber 报告多个 JSON 文件

java - map 上复杂操作的问题

java - 配置变更跟踪系统

c - 有多少递归函数调用导致堆栈溢出?

java - 如何在tomcat文件夹中写入文件?

java - 配置 .jar 以公开其依赖项

recursion - 如何递归打印列表的元素两次?