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 STRING 陷阱原理说明
Jul 24 PHP
php 代码优化之经典示例
Mar 24 PHP
使用php实现下载生成某链接快捷方式的解决方法
May 07 PHP
有关PHP性能优化的介绍
Jun 20 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
PHP类的反射用法实例
Nov 03 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
PHP中常用的数组操作方法笔记整理
May 16 PHP
Laravel中七个非常有用但很少人知道的Carbon方法
Sep 21 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
PHP实现PDO操作mysql存储过程示例
Feb 13 PHP
php中文语义分析实现方法示例
Sep 28 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函数method_exists()与is_callable()的区别
2013/06/21 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
Javascript实现简单二级下拉菜单实例
2014/06/15 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
Js apply方法详解
2017/02/16 Javascript
js a标签点击事件
2017/03/30 Javascript
简单实现JavaScript弹幕效果
2020/08/27 Javascript
JS实现批量上传文件并显示进度功能
2017/06/27 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
使用vue-router为每个路由配置各自的title
2018/07/30 Javascript
Angular异步变同步处理方法
2018/08/13 Javascript
vue中img src 动态加载本地json的图片路径写法
2019/04/25 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
Python学习笔记之os模块使用总结
2014/11/03 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
Django框架会话技术实例分析【Cookie与Session】
2019/05/24 Python
Python read函数按字节(字符)读取文件的实现
2019/07/03 Python
python3 sleep 延时秒 毫秒实例
2020/05/04 Python
历史系毕业生自荐信
2013/10/28 职场文书
大学生饮食连锁店创业计划书
2014/01/17 职场文书
优秀求职信范文分享
2014/01/26 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
入党综合考察材料
2014/06/02 职场文书
博士生求职信
2014/07/06 职场文书
文明单位汇报材料
2014/12/24 职场文书
工作会议简报
2015/07/20 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书