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