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

首先要面临一个问题何谓阶乘?阶乘指从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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值