我是递归新手,我无法理解如何计算此递归阶乘函数。
当我尝试用头脑运行代码时,我会这样想象它:
如果数字 = 4,
第一次返回:4 x 3
第二次返回:3 x 2
第三次返回: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);
}
}
任何帮助和解释将不胜感激。
你的可视化应该是:
如果数字 = 4,
第一次返回:4 x(第二次返回)
第二次返回:3 x(第三次返回)
第三次返回:2 x(第四次返回)
第四次返回:1
然后,如预期的那样,简化为 4 x 3 x 2 x 1。
基本上,您需要区分“返回值x”和“返回递归结果,传入值x”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)