php 递归的简单使用
来源:互联网 发布:数据库日志被截断 编辑:程序博客网 时间:2024/05/21 20:27
对递归一直都有点蒙,前几天就看了下,博客也是拖了几点,今天才写出来,拖延症又犯了,真不是什么好习惯。
递归,都可以用循环来代替,能写循环尽量写循环,那样好理解点。下面是两个小例子。
<?php/** * Created by PhpStorm. * User: koreyoshi * Date: 2017/4/7 * Time: 0:45 *//* * 递归 * 递归本意就是自己调用自己 * 递归需要满足条件 * 1.递归必须要有边界条件 * 2.递归前进段和递归返回段,也就是最后得到的值 * 3.当边界条件(递归出口)不满足时,递归前进,当边界条件(递归出口)满足时,递归返回 * * *///1 斐波那契数列 1,1,2,3,5,8,13,21,34,55,89,144//后面的值等于前两个数的和// f(n) = f(n-1)+f(n-2).//迭代function f($n){ $a = 1; $b = 1; $v = 0; for($i=3;$i<=$n;++$i){ $v = $a + $b; $b = $a; $a = $v; } return $v;}$res = f(6);echo "the res is:".$res;echo "<br/>";//n=10 ff(9),ff(8) 54//n=9 ff(8),ff(7) 34//n=8 ff(7),ff(6) 21//n=7 ff(6),ff(5) 13//n=6 ff(5),ff(4) 8//n=5 ff(4),ff(3) 5//n=4 ff(3),ff(2) 3//n=3 ff(2),ff(1) 2//关于下面这个递归的理解//f(10) 不满足条件,需要请求f(9),f(8)//f(9) 不满足条件,需要请求f(8),f(7)//f(8) 不满足条件,需要请求f(7),f(6)//f(7) 不满足条件,需要请求f(6),f(5)//f(6) 不满足条件,需要请求f(5),f(4)//f(5) 不满足条件,需要请求f(4),f(3)//f(4) 不满足条件,需要请求f(3),f(2)//f(3) 不满足条件,需要请求f(2),f(1)//f(2),f(1),满足条件了,则f(3),求出来了,回到求f(4)的那一步,f(3)由于已知,只剩下f(2)了,满足条件得到//那么f(4)的值也得到了,又回到求f(5)的那一步,f(4)已知,那就去求f(3),f(3)又得调f(2),f(1),f(3)也得到了,//f(5)也得到了,那就回到求f(6)的那一步了,f(5)已经得到,就去调f(4),就这样下去,就得到完整的了。//递归function ff($n){ echo "the n is".$n."<br/>"; if($n == 1 | $n == 2){ return 1; } $aa = ff($n-1)+ff($n-2); echo "the aa is".$aa."<br/>"; return $aa;}$res = ff(10);echo "the res is:".$res;die;//2.猴子吃桃,每天吃一半,又多吃一个,十天后,剩一个桃,问第一天,有几个桃//f(n) = f(n-1)*2+1//迭代function a($n){ $a = 1; for($i=9;$i>=$n;$i--){ $a = ($a+1)*2; } return $a;}$res = a(1);echo "the res is:".$res;echo "<br/>";//递归function aa($n){ echo "the n is".$n."<br/>"; if($n == 10){ return 1; } $a = (aa($n+1)+1)*2; echo "the a is".$a."<br/>"; return $a;}$res = aa(1);echo "the res is:".$res;echo "<br/>";
参考文章
0 0
- php 递归的简单使用
- 关于递归的简单使用
- PHP递归算法的简单实例
- PHP 递归简单了解
- php的简单使用
- php 使用递归的三种手法
- 尾递归(tail recursion) 的简单使用
- 递归函数的简单说明和使用
- php递归使用示例(php递归函数)
- php递归使用示例(php递归函数)
- php 递归函数使用
- PHP QuickSort 递归简单实现
- 递归简单使用
- 简单的PHP Webservice 使用
- php curl的简单使用
- php正则的简单使用
- php的简单使用1
- php Composer的简单使用
- GridView使用
- 定时器
- php添加http头禁止浏览器缓存
- Spring 自定义标签
- C#语法杂碎笔记
- php 递归的简单使用
- VB点击控件移动窗体
- VB精确延时API
- 手机app
- PHP错误提示的关闭方法详解
- VB输入框只允许输入数字
- 最大流算法之EK(最短路径增广算法)
- openSSL1.1.1的编译
- ContentProvider从入门到精通