PHP 递归和递推思想

2 篇文章 0 订阅
2 篇文章 0 订阅

递归思想(递归函数):

递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身。(求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;

结果:
递推举例结果


递归和递推思想总结:

  1. 很多问题,递归和递推都能解决。
  2. 有些问题只能用递归。
  3. 如果两种方法都能解决,推荐使用递推,递推的效率高。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值