阶乘计算思路整理方法归纳

首先要面临一个问题何谓阶乘?阶乘指从1乘以2乘以3乘以4一直乘到所要求的数。举例来说,若要求的数是6,则阶乘式是1×2×3×……×6,得到的积是720,720就是6的阶乘。 若要求的数是n,则阶乘式是x=1×2×3×……×n,x就是n的阶乘。

有个特殊的地方:数学家定义,0!=1,所以0!=1!

方法一:对于累加法的延伸使用~累加说白了就是每次计算加上 上一次计算的值,如此使用累乘的方法自然无可厚非!

var result = 1;

for (int j = 1; j <= i; j++) { //一直进行乘法计算,循环到所需要的数为止

result *= j;

}

方法二,递归的方法。首先我们需要了解我们需要做什么,依次求和,那么对于阶乘我们不妨找寻一下其规律。

n=1: 1 result=1

n=2: 1+2 ->fn(1)+2 result=2

n=3: 1+2+3 -->fn(2)+3 result=6

n=4: 1+2+3+4 -->fn(3)+4 -> fn(2)+3+4 -> fn(1)+2+3+4->1+2+3+4 result=24

n=5: 1+2+3+4+5 -->fn(4)+5 -> fn(3)+3+4+5 -> fn(1)+2+3+4+5 ->1+2+3+4+5 result=120

..

n: 1+2+3...+n --> fn(n-1)+n

由上述推断式不难推断出:将每一次的数作为一个函数进行计算,算出结果后再将每个结果进行相加,我们即可得到我们所需要的结果。递归中每次调用自身也是起到了这个作用。

function result(n) {

if(n==1||n==0){ //有个特殊的地方:数学家定义,0!=1,所以0!=1!

return 1;

}

return fn(n - 1) + n;

}

var output = result(6);

console.log(output);

总结:

递归算法是调用函数本身来表示问题的解。计算中直接或间接调用自己本身。( 函数自己调用自己 停不下来,要有跳出的条件!!!)