编写一个js函数用来求n的阶乘

JavaScript018

编写一个js函数用来求n的阶乘,第1张

function factorial(n){

    return n > 1 ? n * factorial(n-1) : 1

}

factorial(5)//120

以上函数可以求简单的n的阶乘

由于使用的是原生的乘法,所以计算范围有限

主要使用了递归的方式进行计算,是求阶乘的常用方法之一

    var i,n=1

    for(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数组!