表达想法的工具,不要炫技,不能形式大于内容。
一个正整数n的阶乘(factorial),是等于所有小于以及等于n的积。
例如:5! = 5 * 4 * 3 * 2 * 1 等于120
下面代码是计算正整数的阶乘
function factorialize(num) {
if(num == 0){
return 1;
}
return num * factorialize(num-1);
}
console.log(factorialize(5));
//打印 120
这段代码非常的抽象,但是用手写下来它的调用顺序,就非常的容易理解了:
第1次调用后为:5 * factorialize(4)。
第2次调用后为:5 * 4 * factorialize(3)。
第3次调用后为:5 * 4 * 3 * factorialize(2)。
第4次调用后为:5 * 4 * 3 * 2 * factorialize(1)。
第5次调用后为:5 * 4 * 3 * 2 * 1 * factorialize(0)。
第6次调用后为: factorialize(0) 函数中当num为0时,函数返回1。所以最后 5 * 4 * 3 * 2 * 1 * 1 = 120
有些人会很迷惑,为什么终止调用的条件不是 num = 1,而是num = 0,是因为0也是正整数,0! = 1,所以最终的终止条件是num = 0。
function factorialize(num) {
if(num == 0){
return 1;
}
return num * factorialize(num-1);
}
console.log(factorialize(0));
//打印 1
网友评论