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);

-----