无法理解递归因子

Swi*_*day 2 java recursion

我是递归的新手,我无法理解如何计算这个递归因子函数.

当我尝试用我的思想运行代码时,这就是我将其可视化的方式:

如果number = 4,

第一次回归:4 x 3

第二次回归:3 x 2

第3次回归:2 x 1

所以在我看来它是(4 x 3)*(3 x 2)*(2 x 1)但显然正确的返回将是4 X 3 X 2 X 1.我希望能够理解它是如何获得4 X 3 X 2 X 1的.

 public static long factorial(long number) {
        if (number <= 1)
           return 1;
        else
        {
            System.out.println(number + " x " + (number-1) );
           return number * factorial(number - 1);
        }
     }
Run Code Online (Sandbox Code Playgroud)

任何帮助和解释将不胜感激.

Jon*_*eet 5

您的可视化应该是:

如果number = 4,

第1次回归:4次(第2次回归)

第二次回归:3次(第3次回归)

第3次回归:2次(第4次回归)

第四回报:1

然后按预期将其简化为4 x 3 x 2 x 1.

基本上,您需要区分"返回值x"和"返回递归结果,传入值x".