PHP递归算法的详细示例分析


Posted in PHP onFebruary 19, 2013

我们在建设一个网站的时候,程序员们首选的当属PHP语言。我们对PHP还是比较熟悉的,接下来我们将会为大家介绍一下PHP递归算法。PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。

PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言JavaScript相比,PHP在服务器端执行,充分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户再一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。

PHP具有非常强大的功能,所有的CGI或者JavaScript的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。我们这里详细的介绍一下PHP递归算法。

PHP递归算法代码:

< ?php    
//定义PI一分的角度的值 define("PII",M_PI/180);    
//新建图像资源,并定义其背景为白色,前景色为黑色    
$im=imagecreate(670,500);    
$white=imagecolorallocate($im,0xFF,0xFF,0xFF);  
$g=imagecolorallocate($im,0x00,0x00,0x00);    
//从下面实例化的代码可以得知,初始值$x,$y,$L,$a别分为300,500,100,270    
functiondrawLeaf($g,$x,$y,$L,$a)   
{ global$im; $B=50; $C=9; $s1=2; $s2=3; $s3=1.2;    
if($L>$s1){    
//计算叶子的定位上面    
$x2=$x+$L*cos($a*PII);    
$y2=$y+$L*sin($a*PII);    
$x2R=$x2+$L/$s2*cos(($a+$B)*PII);    
$y2R=$y2+$L/$s2*sin(($a+$B)*PII);   
$x2L=$x2+$L/$s2*cos(($a-$B)*PII);   
$y2L=$y2+$L/$s2*sin(($a-$B)*PII);    
//计算叶子的定位下面   
$x1=$x+$L/$s2*cos($a*PII);    
$y1=$y+$L/$s2*sin($a*PII);   
$x1L=$x1+$L/$s2*cos(($a-$B)*PII);    
$y1L=$y1+$L/$s2*sin(($a-$B)*PII);    
$x1R=$x1+$L/$s2*cos(($a+$B)*PII);    
$y1R=$y1+$L/$s2*sin(($a+$B)*PII);    
//别分画叶子的主干以及叶面   
 ImageLine($im,(int)$x,(int)$y,(int)$x2,(int)$y2,$g); 
ImageLine($im,(int)$x2,(int)$y2,(int)$x2R,(int)$y2R,$g); 
ImageLine($im,(int)$x2,(int)$y2,(int)$x2L,(int)$y2L,$g); 
ImageLine($im,(int)$x1,(int)$y1,(int)$x1L,(int)$y1L,$g); 
ImageLine($im,(int)$x1,(int)$y1,(int)$x1R,(int)$y1R,$g);    
//再次递归调用本身    
drawLeaf($g,$x2,$y2,$L/$s3,$a+$C);    
drawLeaf($g,$x2R,$y2R,$L/$s2,$a+$B);    
drawLeaf($g,$x2L,$y2L,$L/$s2,$a-$B);    
drawLeaf($g,$x1L,$y1L,$L/$s2,$a-$B);    
drawLeaf($g,$x1R,$y1R,$L/$s2,$a+$B);    
}    
}    
//实例化    
drawLeaf($g,300,500,100,270);   
 header("Content-type:image/png");    
imagepng($im);    
?>

在我个人的PHP编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考PHP手册。希望下面的代码,会更有利于对PHP递归算法以及静态变量的理解
header("Content-type:text/plain"); functionstatic_function()   
{    
static$i=0;    
if($i++<10)   
{    
echo$i."\n";   
static_function();    
}    
}    
static_function(); 

这段PHP递归算法代码会如数输出1到10的数字。在static_function函数第二次运行时,变量i由于是静态变量,所以仍被保留不被释放,进而可以得到自增的值。
PHP 相关文章推荐
php错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
php中explode与split的区别介绍
Oct 03 PHP
php实现的SESSION类
Dec 02 PHP
php建立Ftp连接的方法
Mar 07 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP中overload与override的区别
Feb 13 PHP
PHP弱类型语言中类型判断操作实例详解
Aug 10 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 PHP
PHP正则表达式笔记与实例详解
May 09 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 PHP
浅谈如何提高PHP代码质量之端到端集成测试
May 28 PHP
关于PHP数组迭代器的使用方法实例
Nov 17 PHP
七款最流行的PHP本地服务器分享
Feb 19 #PHP
浅析PHP递归函数返回值使用方法
Feb 18 #PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
Feb 18 #PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 #PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
Feb 17 #PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 #PHP
PHP 获取文件路径(灵活应用__FILE__)
Feb 15 #PHP
You might like
PHP学习之PHP运算符
2006/10/09 PHP
php cout&amp;lt;&amp;lt;的一点看法
2010/01/24 PHP
php内核解析:PHP中的哈希表
2014/01/30 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
PHP模板引擎Smarty内置变量调解器用法详解
2016/04/11 PHP
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
jQuery制作简洁的多级联动Select下拉框
2014/12/23 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
微信小程序 轮播图swiper详解及实例(源码下载)
2017/01/11 Javascript
Node+Express+MongoDB实现登录注册功能实例
2017/04/23 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
[js高手之路]单例模式实现模态框的示例
2017/09/01 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
Vue-component全局注册实例
2018/09/06 Javascript
详解Vue内部怎样处理props选项的多种写法
2018/11/06 Javascript
Vue+element 解决浏览器自动填充记住的账号密码问题
2019/06/11 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
python如何实现代码检查
2019/06/28 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
英国时尚优质的女装:Hope Fashion
2018/08/14 全球购物
节省高达65%的城市景点费用:Go City
2019/07/06 全球购物
个人找工作的自我评价
2013/10/17 职场文书
庆七一活动方案
2014/01/25 职场文书
员工安全承诺书
2014/05/22 职场文书
企业党建工作总结2015
2015/05/26 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
教师见习总结范文
2015/06/23 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
2016年五一国际劳动节活动总结
2016/04/06 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS