本题考点:阶乘、递归
根据题目要求实现一个阶乘函数,阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。由于阶乘是递归函数的典型示例,所以通过递归的思想,如:number * fn(number -1)展开为number * (number-1) * (number-2)... * 1,可以快速实现某个正整数的阶乘计算,函数内部条件判断为:
-
当参数等于0时,返回1。
-
当参数不等于0时,返回当前值与fn(当前值 - 1)的积。
整个函数的终止条件为:当参数为0时。
参考答案:
function _factorial(number) {
if(typeof number !== 'number') return
if(number < 0) return
if(number === 0) return 1
return number * _factorial(number - 1)
}
方法二:
在函数体内实现一个循环,完成阶乘计算。
参考答案:
function _factorial(number) {
if(typeof number !== 'number') return
if(number < 0) return
for(let i=number-1 ; i>0 ; i--) {
number *= i
}
return number
}