在以下函数中,返回数字的阶乘,在递归调用函数时,如何存储数字的高位。
function factorialize(num) {
if (num < 3) {
return num;
}
return num * factorialize(num - 1);
}
factorialize(5);
我认为这是向后工作以达到5的因子,这是通过将所有正数乘以传递的数字得到的:
1 * 2 * 3 * 4 * 5获得结果
我很困惑每个乘法的结果是如何存储或计算的,以便不断地建立120的结果。
谢谢你们:)
答案 0 :(得分:1)
该函数正在执行检查,然后调用自身。当它再次调用时,它会传递计算结果。
因此,每次调用factorialize(num - 1);
时,num
都将是上次调用的结果,计算将从该值中删除1并传递该新值。
一步一步是这样的:
factorialize(5)
,它使用参数5调用该函数。5
是否小于3(不是),如果不是,则再次调用自身。此时的参数是原始参数减1 - 所以4
3