本节内容:

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递归算法以及静态变量的理解。

复制代码 代码示例:

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递归函数小例子

php递归算法 php递归函数无限级分类

PHP递归算法与应用实例

php递归算法应用实例

php递归实现无限分类 php格式化数组

php递归方法实现无限分类示例

php递归遍历目录的二个函数

php用递归方法实现无限级分类的代码

php递归创建和删除文件夹的代码

php递归删除目录的例子

什么是php递归算法_PHP递归算法实例解析相关推荐

  1. 什么是php递归算法_PHP递归算法(一)

    在前面的文章中,我们为大家介绍了PHP算法系列之<PHP随机取一算法>和<PHP冒泡排序算法>,需要的朋友可以了解学习.本篇文章我们将继续为大家带来常见的PHP算法,即PHP递 ...

  2. python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt

    Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...

  3. 非递归算法和递归算法的效率分析

    在对算法进行效率分析时,非递归算法和递归算法的分析表现出差异性.这里将分类逐一介绍. 非递归算法效率分析 在分析非递归算法时,我们可遵循以下通用方案: (1) 决定用哪个(哪些)参数表示输入规模. ( ...

  4. List元素互换,List元素转换下标,Java Collections.swap()方法实例解析

    Java Collections.swap()方法解析 jdk源码: public static void swap(List<?> list, int i, int j) {// ins ...

  5. python argparse模块_Python argparse模块应用实例解析

    这篇文章主要介绍了Python argparse模块应用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 简介 argparse是python ...

  6. php的延迟绑定,PHP延迟静态绑定使用方法实例解析

    这篇文章主要介绍了PHP延迟静态绑定使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 PHP的继承模型中有一个存在已久的问题,那就是在 ...

  7. Reactor实例解析

    \ 要点 \\ Reactor是一个运行在Java8之上的响应式流框架,它提供了一组响应式风格的API\\t 除了个别API上的区别,它的原理跟RxJava很相似\\t 它是第四代响应式框架,支持操作 ...

  8. 实例解析linux内核I2C体系结构

    实例解析linux内核I2C体系结构 一.概述 谈到在linux系统下编写I2C驱动,目前主要有两种方式,一种是把I2C设备当作一个普通的字符设备来处理,另一种是利用linux I2C驱动体系结构来完 ...

  9. python反射实例化_Python类反射机制使用实例解析

    这篇文章主要介绍了Python类反射机制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 反射就是通过字符串的形式,导入模块:通过字符串的 ...

  10. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

最新文章

  1. 命令行编译运行CSharp文件
  2. 矩阵sum_推荐系统——从协同过滤到矩阵分解
  3. OpenCV条形码识别
  4. 第一个PowerShell脚本——PowerShell三分钟(九)
  5. 项目背景怎么描述_培训回顾 |第六届“互联网+”之创业大赛项目计划书撰写
  6. 搭建IntelliJ IDEA+maven+jetty+SpringMVC 开发环境(一)
  7. JS 回调(CallBack)
  8. android u盘加密代码,怎么用安卓手机给u盘加密
  9. ubuntu最好用的划词翻译词典:有道词典和GoldenDict
  10. 武汉linux软件,Linux发行版Mandriva的安装与软件包
  11. Skype for Linux下载地址
  12. 浮躁和傲慢,这样的人比比皆是
  13. Cousera-Introduction to Data Science in Python Assignment1-4答案
  14. 如何查看wifi设备
  15. [转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10
  16. 《离散数学导学》精炼:第4,5章(集合论,布尔代数)
  17. 浏览器下载文件,读取BLOB字段会因为数据太大导致数据库连接connect超时关闭的解决方案...
  18. B. Sheldon and Ice Pieces
  19. 谷歌浏览器如何彻底关闭右下角弹出的广告弹窗
  20. 静观花开花落,笑看云卷云舒

热门文章

  1. java application.doevents_关于Application.DoEvents()的小研究
  2. 录制软件Bandicam安装教程
  3. catia制作物料明细_CATIA课时:符合GB的物料清单模板设置视频教程_翼狐网
  4. 高职计算机专业英语说课ppt,专业英语说课.ppt
  5. 【学习OpenCV4】OpenCV4入门介绍
  6. Qt5 与OpenCV4教程一:Qt5.12安装与OpenCV4.5.0配置
  7. Android 分贝测试仪功能,华为移动终端开发
  8. Socket面试题整理
  9. 三极管的导通条件总结
  10. springboot中ehcache的使用