欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

理解与实现 PHP 中的递归与迭代(递推)概念

最编程 2024-07-21 19:19:56
...


递归思想(递归函数):
递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身。(求n!问题用递归;杨辉三角问题用过递归…)

<?php
    funtion digui($n){
        if($n==1){
            return 1;
        }
        return digui($n-1)*$n;
    }

    $a=6;
    echo "{$a}的阶乘为:{$a}!=".digui($a);

结果为: 
 

递归思想总结: 
为了解决一个“大”问题,根据现实逻辑,该问题可以通过比它小一级的同类问题的答案得到。小一级的问题又可以根据更小一级的问题的答案得到。以此类推,直到“最小一级问题”的答案是一个已经的。

递归思想图例: 

递推思想(迭代思想):
递推思想和递归思想很相似,都是需要知道“最小一级问题”的答案。 
我们先来看递推思想图例: 

区别: 
对比图例后我们可以发现递归和递推是有所差异的,递推的整体思想是从小到大,而递归的整体思想是从大到小,再从小回到大。简单说,递推是更新变量的旧值,递归是在函数中调用函数自身。

举例: 求斐波那契数列的第n项的值(递推最经典的问题) 
斐波那契数列的规律:1, 1, 2, 3, 5, 8, 13, 21…(最前的两个数都为1,从第3位开始,后面每位数为前两位数的和)

<?php
    function fbnq($n){
        $n1=1;//斐波那契数列第一项初始为1
        $n2=1;//斐波那契数列第二项初始为1
        $result=0;
        for($i=3,$i<=$n;++$i){
            $result=$n1+$n2;
            $n1=$n2;//更新旧值
            $n2=$result;//更新旧值
        }
        return $result; 
    }

    $a=fbnq(7);//求斐波那契数列第7个数
    echo "斐波那契数列第7项为:".$a;
 

递归和递推思想总结:
很多问题,递归和递推都能解决。
有些问题只能用递归。
如果两种方法都能解决,推荐使用递推,递推的效率高。
 

推荐阅读