我是递归的新手,我无法理解如何计算这个递归因子函数.
当我尝试用我的思想运行代码时,这就是我将其可视化的方式:
如果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)
任何帮助和解释将不胜感激.
您的可视化应该是:
如果number = 4,
第1次回归:4次(第2次回归)
第二次回归:3次(第3次回归)
第3次回归:2次(第4次回归)
第四回报:1
然后按预期将其简化为4 x 3 x 2 x 1.
基本上,您需要区分"返回值x"和"返回递归结果,传入值x".