php 递推 递归
思想:如何利用数学模式,来解决对应的需求问题,然后利用代码实现对应的数据模型(逻辑)
算法:使用代码实现对应的数学模型,从而解决对应的业务问题
递推算法是一种简单的算法,级通过已知条件,利用特定关系得出中间推论,直至得到结果的算法,分为顺推和逆推两种
顺推:通过最简单的条件(已知)然后逐步推演结果
逆推:通过结果找到规律,然后推到已知条件
斐波那契数列:1,1,2,3,5,8,13...
$f[1] = 1; $f[2] = 1; $def = 15; for($i = 3;$i < $des;$i++){ $f[$i] = $f[$i-1]+$f[$i-2]; } echo '<pre>'; print_r($f);
function my_k($des){ if($des == 1||$des ==2) return 1; $f[1] = 1; $f[2] = 1; for($i = 3;$i < $des;$i++){ $f[$i] = $f[$i-1]+$f[$i-2]; } return $f[$des]; } echo my_k(15);
递归
是把问题转化为规模缩小的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解
简化问题找到最优子问题
函数自己调用自己
递归点:发现当前问题可以有解决当前问题的函数,去解决规模比当前小一点的问题来解决
F(N) = F(N - 1) + F(N - 2);
递归出口:当前问题解决的时候,已经到达(必须有)最优子问题,不能再次调用函数
如果一个函数递归调用自己而没有递归出口:就是死循环
递归本质是函数调用函数:一个函数需要开辟一块空间,递归会出现同时调用N多个函数(自己):递归的本质是利用空间换时间
function rec($n){ // 递归出口 if($n == 1|| $n == 2) return 1; // 递归点:求N的值,与N - 1的值一模一样,只是N-1的规模比N小 return rec($n - 1) + rec($n - 2); } echo rec(15);
-----
时刻告诉自己,自己是个菜鸡......