关于递归的理解小分析
<?php
/ *
递归(阶乘算法)=>流程
1! 1
2! 2 * 1
3! 3 * (2 * 1)
4! 4 * (3 * (2 * 1))
…………
递归就是: 以自然数 n 乘以 (n -1) 的阶乘. => n! = n * (n -1)!
比如:
从最小的阶乘开始, 即 2 * 1 (假设 n = 2)
设 R 表示为阶乘 则
R(2) = 2 * 1;
R(3) = 3 * (2 * 1);
=> R(3) = 3 * R(2);
……
R(n) = n * ((n -1) * (n - 2) * (n -3) * …… * 2 * 1);
=> R(n) = n * R(n -1); (n >= 1)
=> 数学规定: 0! = 1;
所以 要加判断 当$num = 1 / 0 的时候 要输出 1 .
总结: 递归就是:以自然数 n 乘以 (n -1) 的阶乘. => R(n) = n * R(n -1);
下面为示例代码。
*/
function recursive(int $num): int
{
// 判断条件不能放在return后面! 因为return之后的代码不执行!(在函数 / 方法 体内)
if ($num == 1 || $num == 0) {
return 1;
}
return $num * recursive($num - 1);
}
echo recursive(5); // => 120
其实递归最简单的理解就是:找到跳出递归的条件就行了!!!(一般为到1就跳。)