问题描述
我目前正在学习Java,并且正在学习递归。我尝试了这两种相同的方法,但我认为其中一种行为很奇怪。这是Java中的错误吗?还是我无法理解逻辑。
有人可以对此进行解释吗?
我使用的JAVA:
java版本“ 1.8.0_261”
Java(TM)SE运行时环境(内部版本1.8.0_261-b12)
Java HotSpot(TM)客户端VM(内部版本25.261-b12,混合模式,共享)
这是我的代码:
第一种情况:
public class App {
public static void main(String[] args) {
int value = 5;
System.out.println("Factorial " + value + " = " + faktorial(value));
}
public static int faktorial(int value) {
if (value > 1) {
System.out.print(value + " * ");
}
if (value == 1) {
System.out.println("1");
return 1;
}
return value * faktorial(value-1);
}
}
第一个案例的输出将是:
5 * 4 * 3 * 2 * 1
基础5 = 120
在第二种情况下:
public class App {
public static void main(String[] args) {
int value = 5;
System.out.print("Factorial " + value + " = "); //HERE IS THE CHANGE
System.out.println(faktorial(value)); //HERE IS THE CHANGE
}
public static int faktorial(int value) {
if (value > 1) {
System.out.print(value + " * ");
}
if (value == 1) {
System.out.println("1");
return 1;
}
return value * faktorial(value-1);
}
}
第二个CASE的输出为:
要素5 = 5 * 4 * 3 * 2 * 1
120
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)