再帰呼出しとは、ある関数内で自身の関数を呼び出すことを言います。
再帰呼出しを使うことで、プログラムが簡単にかける場合があります。
n! = n * (n-1) * (n-2) * ... * 2 * 1
0! = 1
また、n! は、以下の様に、n と (n-1)! の積として表すことができます。
n! = n * (n-1)!
よって、n の階乗を計算する関数は、引数 n と (n-1) の階乗(引数を n-1 として、自身の関数を呼び出す)を掛けて、その結果を返せば良いことになります。
ここで、引数が1以下の場合は、1を返すようにします。
再帰呼出しを使って、階乗を計算プログラムを書くと以下のようになります。
var n = window.prompt("Input number(0-21)?");
console.log(n + "! = " + factorial(n));
function factorial(n) {
if(n <= 1) return 1;
return n * factorial(n - 1);
}