/* * 循环算法 * 逻辑: * 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);