递归思想(递归函数):

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

<?phpfuntion 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位开始,后面每位数为前两位数的和)

<?phpfunction 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. 如果两种方法都能解决,推荐使用递推,递推的效率高。

PHP 递归和递推思想相关推荐

  1. php中的递归思想,PHP 递归和递推思想

    递归思想(递归函数): 递归思想的一个基本形式是在一个函数中,有至少一条语句,又会去调用该函数自身.(求n!问题用递归:杨辉三角问题用过递归-) funtion digui($n){ if($n==1 ...

  2. 贪心、递归、递推以及动态规划算法的分析与对比

    PS:   头一次规规矩矩的按照论文的格式写文章,呵呵.虽然是小儿科的不能再小儿科的东西了..不过..也忽悠了6000多字~~嘿嘿..肯定写的不好,第一次嘛..所以..接受大家一切批评哈!...文章N ...

  3. 递归,递推,记忆化搜索,空间优化(数字三角形)

    题目链接:http://poj.org/problem?id=1163 1.递归思想:第一层到最底层的最优路径可以分解为:第一层到第二层来,再加上第二层的最优路径 状态: Time Limit Exc ...

  4. 斐波那契尾递归函数java_斐波那契数列 递归 尾递归 递推 C++实现

    ==================================声明================================== 本文原创,转载请注明作者和出处,并保证文章的完整性(包括本 ...

  5. 递归与递推 普通排队问题及带约束条件的排队问题 c代码

    先看下题目: 电影院买票排队,票价50,排队的人中携带50元的有20个人,携带100的有10个人,售票处开始时没有余额, 问最多有多少种排队方式使得售票处能够找的开(携带相同数额的人交换位置算一种排队 ...

  6. 2.3 基本算法之递归变递推 1188 菲波那契数列(2) python

    http://noi.openjudge.cn/ch0203/1760/ """2.3 基本算法之递归变递推 1188 菲波那契数列(2)--3分 http://ybt. ...

  7. 2.3基本算法之递归变递推 1188 菲波那契数列(2)

    http://noi.openjudge.cn/ch0203/1760/ /* 2.3基本算法之递归变递推 1188 菲波那契数列(2) http://ybt.ssoier.cn:8088/probl ...

  8. 2.3 基本算法之递归变递推 放苹果 python

    http://noi.openjudge.cn/ch0203/666/ """ 2.3 基本算法之递归变递推 666 放苹果 http://noi.openjudge.c ...

  9. 2.3基本算法之递归变递推_3525上台阶

    http://ybt.ssoier.cn:8088/problem_show.php?pid=1190 /* 2.3基本算法之递归变递推_3525上台阶 http://noi.openjudge.cn ...

最新文章

  1. 【嵌入式】openmv与stm32的串口通信
  2. 独家 | 准备数据时如何避免数据泄漏
  3. V神:随着时间的推移,我对链外数据L2越来越悲观
  4. 体育直播软件发展的三个阶段
  5. scss2css vscode设置_VSCode下让CSS文件完美支持SCSS或SASS语法方法
  6. 新建文本文档好玩的代码_(03)用什么工具写ASP源代码?
  7. 346个基因组可视化工具一网打进!
  8. linux vi 编辑器用法
  9. 某集团BI决策系统建设方案分享
  10. Linux系统下文件与目录操作
  11. 网站发布助手V1.1 (去年写的简单小工具)
  12. 计算机二级c语言考点变化,计算机二级C语言考点归纳汇总.doc
  13. C/C++经典项目开发:教你破解Windows系统密码,手把手教你做解密项目
  14. 30分钟学会iOS 11开发环境xcode 9图文教程
  15. phpMyadmin /scripts/setup.php Execute Arbitrary PHP Code Via A Crafted POST Request CVE-2010-3055
  16. linux系统弹出鼠标,Ubuntu14.04及以上操作系统鼠标闪烁问题
  17. 破解无线网络密码-BT3如何使用1
  18. HTML5+CSS3-边框背景图、多背景图、CSS选择器、网络字体、边框背景图片、过渡、放大、旋转
  19. XMU 1071 圣斗士黄金十二宫(七)银河星爆 【计算几何】
  20. Jetpack:Lifecycle 和 LiveData

热门文章

  1. APIAuto——敏捷开发最强大易用的 HTTP 接口工具 (二)
  2. 软件测试 | 测试开发 | Nginx反向代理及内部模型简述
  3. JZ-008-跳台阶
  4. 最大扇入数怎么判断_实战分享——百家号怎么运营获得稳定收益
  5. 文件下载中文名乱码问题
  6. SSL安全连接是什么意思?HTTPS安全登录指的什么?
  7. linux 在指定区域分配内存 c语言,C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存...
  8. JDK8的介绍下载和安装(附网盘地址)
  9. 关键词短语生成的无监督方法01——综述
  10. 目前主流手机操作系统介绍-手机平台