PHP实现阶乘的原理与代码分析

/*
 * 循环算法
 * 逻辑:
 *      1,定义阶乘结束为$n
 *      2,定义阶乘初始值为1
 *      3,循环,结束为当前的循环次数小于$n次,并且开始值为2
 *      4,循环中将初始值乘以每次循环的次数
 *          (1*2*3*4*5)
 *          第一次循环结果为3,乘以下次循环的3,乘以下下次循环的4,直至结束
 */
$n = 5;
$result = 1;
for($i=2;$i<=$n;$i++)
{
    $result *= $i;
}
echo $result;

/*
 * 阶乘递归算法
 * 逻辑:
 *      1,定义需要的第N次阶乘
 *      2,定义一个递归函数并将值传输进去
 *      3,判断如果值为0,则return 'error';
 *      4,此递归的退出条件是,当第N次循环等于1的时候将往上层层退出;、
 *      5,递归调用,传输的值为当前的N次阶乘减一,乘以当前的阶乘次
 *      层层往下调
 *      (5*4*3*2*1)
 *      当值为1的时候开始层层往上返,每次的返回值都是乘以后的值,
 *      (1*2*3*4*5)
 */
function recursion($n)
{
    if($n<0)
    {
        return 'error';
    }else{
        if($n === 1)
        {
            return 1;
        }
        return recursion($n - 1)*$n;
    }
}
$res = recursio(5);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值