php 递归的简单使用
2017-04-07 02:16
387 查看
对递归一直都有点蒙,前几天就看了下,博客也是拖了几点,今天才写出来,拖延症又犯了,真不是什么好习惯。
递归,都可以用循环来代替,能写循环尽量写循环,那样好理解点。下面是两个小例子。
参考文章
递归,都可以用循环来代替,能写循环尽量写循环,那样好理解点。下面是两个小例子。
<?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/>";
参考文章
相关文章推荐
- PHP不使用递归的无限级分类简单实例
- PHP中使用XML-RPC构造Web Service简单入门
- PHP中使用XML-RPC构造Web Service简单入门
- AJAX在PHP中的简单使用
- PHP简单演示如何使用模板制作静态页面
- PHP5.2中PDO的简单使用
- PHP中使用XML-RPC构造Web Service简单入门
- PHP学习使用资源简单总结
- PHP中使用XML-RPC构造Web Service简单入门
- PHP学习使用资源简单总结
- AJAX在PHP中的简单使用
- 使用PHP简单网页抓取和内容分析
- AJAX在PHP中的简单使用
- PHP学习使用资源简单总结
- 今天又哥哥问俺php 全局变量的使用问题了,俺在这里发个简单的例子
- 使用"函数递归"实现基于php和MySQL的动态树型菜单
- PHP面向对象的使用教程 简单数据库连接
- 使用函数递归实现基于php和MySQL的动态树型菜单
- AJAX在PHP中的简单使用
- 使用函数递归实现基于PHP和MySQL的动态树型菜单[转]