2013-06-30 1 views
0

Да, этот нуб пытается понять простую факториальную функцию и был смущен одной частью.может кто-нибудь объяснить элемент в этом простом факториальном скрипте в JS

В

var f = []; 
function factorial (num) { 
    if (num === 0 || num === 1) { 
    return 1; } 
    if (f[num] > 0) { 
    return f[num];} 
    else { 
    return f[num] = factorial (num - 1) * num; 
    } 
factorial(4); 

что именно делает

if (num === 0 || num === 1) { 
return 1; } 

часть делать и зачем это нужно?

Спасибо!

ответ

2

Это базовые случаи факториальной функции. 0! = 1 и 1! = 1, поэтому он возвращает эти значения в этих случаях. Если вы рекурсируете без базового футляра, вы будете бесконечно рекурсивно, не давая фактического значения.

Другим решением было бы добавить те случаи, предварительно рассчитанные в f:

var f = [1, 1]; 

Тогда будет пойман вторым условием.

+0

Perfect. Это дает общий смысл, спасибо. – PanicBus