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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
PHP页面间传递参数实例代码
Jun 05 PHP
php 什么是PEAR?
Mar 19 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
Jun 07 PHP
PHP+memcache实现消息队列案例分享
May 21 PHP
php几个预定义变量$_SERVER用法小结
Nov 07 PHP
php去除二维数组的重复项方法
Nov 03 PHP
PHP编程计算文件或数组中单词出现频率的方法
May 22 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
Sep 27 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
php和js实现根据子网掩码和ip计算子网功能示例
Nov 09 PHP
解决windows上php xdebug 无法调试的问题
Feb 19 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中操作Excel实例代码
2010/04/29 PHP
php中通过Ajax如何实现异步文件上传的代码实例
2011/05/07 PHP
PHP常用工具函数小结【移除XSS攻击、UTF8与GBK编码转换等】
2019/04/27 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
js从10种颜色中随机取色实现每次取出不同的颜色
2013/10/23 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
jQuery中常用的遍历函数用法实例总结
2015/09/01 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
如何清除IE10+ input X 文本框的叉叉和密码输入框的眼睛图标
2016/12/21 Javascript
Bootstrap popover用法详解
2016/12/22 Javascript
JavaScript实现两个select下拉框选项左移右移
2017/03/09 Javascript
BootStrap注意事项小结(五)表单
2017/03/10 Javascript
vue中如何引入jQuery和Bootstrap
2017/04/10 jQuery
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
基于Vue插入视频的2种方法小结
2019/04/02 Javascript
python使用post提交数据到远程url的方法
2015/04/29 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
python按照多个条件排序的方法
2019/02/08 Python
Python学习笔记之图片人脸检测识别实例教程
2019/03/06 Python
python 默认参数相关知识详解
2019/09/18 Python
用 Python 制作地球仪的方法
2020/04/24 Python
python 基于wx实现音乐播放
2020/11/24 Python
美国在线旅行社:Crystal Travel
2018/09/11 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
酒店管理毕业生自荐信
2013/10/24 职场文书
校园餐饮创业计划书
2014/01/10 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
农民工讨薪标语
2014/06/26 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书