本题考点:阶乘、递归

根据题目要求实现一个阶乘函数,阶乘是所有小于及等于该数的正整数的积,并且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
}