我目前正在学习Java教程,正在学习递归相关内容。
我有以下代码,可以计算传入factorial方法的任何数字的阶乘:
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;
该函数返回(值-1)* 值的总和,这将为我提供
(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
求得的,但我不明白如何从上述内容中计算出它。
如果有任何解释,将不胜感激。