return n > 1 ? n * factorial(n-1) : 1
}
factorial(5)//120
以上函数可以求简单的n的阶乘
由于使用的是原生的乘法,所以计算范围有限
主要使用了递归的方式进行计算,是求阶乘的常用方法之一
var i,n=1for(i=2i<6i++){//5!=1*2*3*4*5
n*=i
}
console.log("5的阶乘是"+n)
/***
* Created by zhou2003737
*/
/**
* 判断是否为number类型数据
* @param num
* @returns {boolean}
*/
function isNumber(num) {
return typeof num === 'number'
}
/**
* 判断是否为number类型数组
* @param numArr
* @returns {boolean}
*/
function isNumberArray(numArr) {
return Array.isArray(numArr) && numArr.every(isNumber)
}
/**
* 阶乘
* @param arr
* @returns {*}
*/
function factorial(arr) {
if(isNumberArray(arr)){
return arr.reduce(function (preAll, current) {
return preAll * current
}, 1)
}
throw new Error('参数必须为全部为Number数组!')
}
var a = [1,2,3,4,5]
var result = factorial(a)
console.log(result) // 120
a = ['1',2,3,4,5]
result = factorial(a) // Error: 参数必须为全部为Number数组!