数组阶乘。获取NaN输出。Javascript

数组阶乘。获取NaN输出。Javascript,javascript,arrays,nested-loops,nan,factorial,Javascript,Arrays,Nested Loops,Nan,Factorial,我想要什么 Factorial: NaN 你可以利用Felix Kling回答中的这个事实函数,使用Array.map,然后使用Array.join Factorial: 120,24,6,2,1 代码中有错误(或至少是奇怪的)地方: f是一个数字。不过,您似乎希望函数返回数组 i0)acc*=n--; 返回acc; } 函数数组(参数){ var f=[]; 对于(var i=0;i请尝试以下代码 function factorial(n) { // function that

我想要什么

Factorial: NaN

你可以利用Felix Kling回答中的这个
事实
函数,使用
Array.map
,然后使用
Array.join

Factorial: 120,24,6,2,1
代码中有错误(或至少是奇怪的)地方:

  • f
    是一个数字。不过,您似乎希望函数返回数组
  • i0)acc*=n--;
    返回acc;
    }
    函数数组(参数){
    var f=[];
    对于(var i=0;i请尝试以下代码

    function factorial(n) {
        // function that computes the number n!
        var acc = 1;
        while (n > 0) acc *= n--;
        return acc;
    }
    function facArray(params) {
        var f = [];
        for (var i=0; i<params.length; i++)
            f[i] = factorial(params[i]);
        return f;
    }
    
    var数组=[5,4,3,2,1];
    写(“
    factorial:”+factorial(数组).join(“,”); 函数阶乘(params){ var op=[]; 对于(i=params.length-1;i>=0;i--){ var f=1; 对于(j=0;j
    这都在
    中,而
    :D

    var array = [5,4,3,2,1];
    
    document.write("<br>Facorial: " + factorial(array).join(','));
    
    function factorial(params){
            var op = [];
            for (i = params.length - 1; i >= 0 ; i--){
                var f = 1;
                for (j = 0; j < i; j++){
                    f = f * params[j];
                }
                 op.push(f);
            }
           return op;
        }
    
    从最后一个到第一个,一乘一

    function factorial(n) {
        // function that computes the number n!
        var acc = 1;
        while (n > 0) acc *= n--;
        return acc;
    }
    function facArray(params) {
        var f = [];
        for (var i=0; i<params.length; i++)
            f[i] = factorial(params[i]);
        return f;
    }
    
    var array = [5,4,3,2,1];
    
    document.write("<br>Facorial: " + factorial(array).join(','));
    
    function factorial(params){
            var op = [];
            for (i = params.length - 1; i >= 0 ; i--){
                var f = 1;
                for (j = 0; j < i; j++){
                    f = f * params[j];
                }
                 op.push(f);
            }
           return op;
        }
    
    var array = [5,4,3,2,1];
    var len = array.length-1;
    while(len--) {
        array[len] *= array[len+1];
    }
    
    array;// [120, 24, 6, 2, 1]