Fox*_*rts 1 javascript recursion
我试图理解递归,并发现下面作为freecodecamp递归练习的答案来对一个数字进行因式分解.这是正确的,但我不明白它是如何运行的.
对不起,如果这不是一个合适的问题,请第一次使用.
function factorialize(num) {
if (num === 0) { return 1; }
return num * factorialize(num-1);
}
factorialize(5);
>120
Run Code Online (Sandbox Code Playgroud)
由于累积了递归函数的各个结果,因此可以通过以下方式设想此过程:
当前值:5*factorialize(4)
当前值:5*4*factorialize(3)
当前值:5*4*3*factorialize(2)
当前值:5*4*3*2*factorialize(1)
当前值:5*4*3*2*1*factorialize(0)
当前值:5*4*3*2*1*1
这导致120.
function factorialize(num) {
if (num === 0) { return 1; } // 7th step
return num * factorialize(num-1); // 1st to 6th step
}
Run Code Online (Sandbox Code Playgroud)