2015-06-27 2 views
0

Я пытаюсь написать функцию, которая вернет факториал любого числа, заданного в качестве ввода. Прямо сейчас мой код абсолютно беспорядок. Пожалуйста помоги.Написание цикла для оценки факториала

function factorialize(num) { 
    for (var i=num, i>0, i--){ 
    var result = 1; 
    result = result * i; 
    } 
    return result; 

} 

factorialize(5); 
+0

Проблемы были, что параметры _for_ должны были быть delimitated точкой с запятой «; " а не запятыми и что вы объявляете _result_ внутри цикла _for_, поэтому он все время переписывается как 1, и функция всегда возвращается 1 –

+0

Благодарим вас за разъяснение. @ HéctorE –

ответ

1

Это должно быть, как это

function factorialize(num){ 
    var result = 1; 

    for(var i = num ; i >0 ; i--) { 

    result = result * i ; 

    } 
    return result; 

} 

вы также можете использовать рекурсию для этого

function fact(num) { 

    if(num > 1) 

     return num * fact(num-1); 
else 
    return 1; 

} 
0
function factorialize(num) { 
    var result = 1; 
    while (num) { 
     result *= num; 
     num--; 
    } 
    return result; 
} 

factorialize(5); 

// or a very short version: 
function f(n) { return +!~-n || n * f(n - 1); } 
Смежные вопросы