【发布时间】:2015-04-27 18:23:09
【问题描述】:
我目前正在学习 Java 教程,目前正在学习递归。
我有以下代码计算传递给阶乘方法的任何数字的阶乘
public class App {
public static void main(String[] args) {
//E.g 4! = 4*3*2*1(factorial 4)
System.out.println(factorial(4));
}
private static int factorial(int value){
//System.out.println(value);
if (value == 1){
return 1;
}
return factorial(value - 1)*value;
}
}
我无法理解该部分
if (value == 1){
return 1;
}
return factorial(value - 1)*value;
我的理解是 return 关键字只是终止方法,和/或返回方法声明的相同类型的值(即 int、String 等)。
运行以下行时会发生什么?
return factorial(value - 1)*value;
函数返回 (value - 1) * value 的总和,这会给我
(3)*4 = 12
(2)*3 = 6
(1)*2 = 2
每次通过迭代。但是,System.out.println(factorial(4)); 总共给了我24。这个数字是如何从方法中得出的?没有变量来存储值的总和,那么程序将它们存储在哪里?另外,如何从这些值中获取24?
(3)*4
(2)*3
(1)*2
虽然我知道24 是从4*3*2*1 派生的,但我看不出如何从上面计算出来。
任何解释将不胜感激。
【问题讨论】: