java - Java中使用递归的乘法
问题描述
我是编程新手,我正在用 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);
显然,这比递归要快得多。
推荐阅读
- bash - 根据 bash 第一列中的组数和最大行数拆分文件
- c++ - 如何在 c++ 中覆盖 CC_SYNTHESIZE 中的参数?
- reactjs - 在 `next/image` 上出现错误 Invalid src prop ('here is a link'),主机名“localhost”未在 `next.config.js` 中的图像下配置
- struct - `==` 是否在 Julia 中递归检查结构?好像没有
- python - 在 Flask 中重定向时更改发布请求的值
- mysql - 如何使用 Laravel 和 mysql 计算表中具有不同日期和时间列的多行的总时间
- python - Pandas 在给定值列表的情况下查找数据框列中最接近值的索引
- r - 在 uniqueN 函数之后更改列的名称
- android - 截屏 Dialog 内的整个 ScrollView 内容
- excel - 文档已创建,但文件名不正确并保存在不正确的位置