我们在建设一个网站的时候,程序员们首选的当属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递归算法的详细示例分析相关推荐

  1. php关键词匹配度排序,MySQL_mysql 关键词相关度排序方法详细示例分析,小项目有时需要用到关键词搜 - phpStudy...

    mysql 关键词相关度排序方法详细示例分析 小项目有时需要用到关键词搜索相关性排序,用sphinx显得杀鸡用牛刀,就用mysql的order by对付下. 方法一: select * from ar ...

  2. 事件循环机制 + ES7:Async/Await(基于generator原理实现)附详细示例分析

    文章目录 一.事件循环 任务队列 宏任务和微任务 循环机制 简单示例 二.Async/Await 1. async 2. await 3. 原理 4. 示例(红字分析为关键) 一.事件循环 任务队列 ...

  3. mysql 关键词相关度排序方法详细示例分析

    http://www.jb51.net/article/40480.htm 转载于:https://www.cnblogs.com/lixiuran/p/5299305.html

  4. 斐波那契数列递归算法和非递归算法以及其时间复杂度分析

    1.在学习数据结构这门课的过程中,发现斐波那契数列的递归算法以及非递归算法,以及其时间复杂度分析是一个小难点.所以特别总结一下. 斐波那契数列的表达式: Fibonacci数列简介: F(1)=1 F ...

  5. 递归算法与非递归算法比较

    转载自:https://blog.csdn.net/mhsszm/article/details/78445591 非递归效率高:递归代码写出来思路清晰,可读性强. 生成可执行文件大小应该和编译器有关 ...

  6. TVM开发三个示例分析

    TVM开发三个示例分析 把自主生成的代码生成TVM 把自主生成的代码生成TVM 目录 简介 要生成C代码. 要生成任何其它图形表示. 实现一个C代码生成器 实现[CodegenC] 运算符代码生成 输 ...

  7. zz 递归算法转换为非递归算法

    from:http://blog.csdn.net/Shunrei/archive/2010/06/19/5680579.aspx 递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解 ...

  8. Android涂鸦技术及刮刮乐示例分析

    概述: 很早之前就想研究一下Android中的涂鸦,其实也说不上是研究了,毕竟都是一些相对比较简单的知识点.下面就对基于画布(Canvas)和触摸事件(onTouchEvent)来实现涂鸦和刮刮乐. ...

  9. 计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析

    计算机网络中网站性能延迟加载图像的示例分析 发布时间:2021-06-09 11:38:56 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关计算机网络中网站性能延迟加载图像的示例分析 ...

  10. nodejs ajax进度条,Ajax异步文件上传与NodeJS express服务端处理的示例分析

    Ajax异步文件上传与NodeJS express服务端处理的示例分析 发布时间:2021-07-24 11:17:21 来源:亿速云 阅读:79 作者:小新 这篇文章主要介绍Ajax异步文件上传与N ...

最新文章

  1. 微软研究院开源DialoGPT:你有什么梦想?「让世界充满机器人」
  2. DIV遮罩层--数据缓冲效果的实现
  3. JDBC(一)——statement对象、PreparedStatement对象
  4. 构造函数也可以进行方法重载_防蛀方法不止涂氟、窝沟封闭,还有一种方法在家就可以进行。...
  5. 宏在使用过程余函数的区别1
  6. [转载] python __slots__ 详解(上篇)
  7. C++PrimerPlus学习——第十三章编程练习
  8. 找到指针的奇数位置 c语言,(ppt)【C语言程序设计】上机作业2010.ppt
  9. linux命令查bin中所有变量名,Linux--文件查找命令
  10. UIButton长度自适应文字长度
  11. iPad商标门--苹果败诉,,之后是和解么???
  12. 智能电视 无服务器,服务器之家教你修改DNS,让电视、网络机顶盒告别卡顿
  13. 移动服务器连接响应慢,移动打开网页速度慢的解决方法
  14. Jquery 中a||的含义
  15. OpenWrt TL-WR841N WAN口down问题
  16. windows系统镜像修复计算机,电脑映像损坏怎么修复_windows提示损坏的映像怎么处理...
  17. 2019-07-12 函数递归、二分法、匿名函数、三元表达式、内置函数
  18. 计算机键盘的功能键在哪,台式电脑home键在哪里(有关电脑按键作用介绍)
  19. NFC模块PN532使用
  20. 赛尔号桌面版_4399赛尔号官方版下载-4399赛尔号经典版电脑版 - 极光下载站

热门文章

  1. android 安装apk -99,Android APK 安装适配
  2. 5节锂电池升压充电管理芯片
  3. 腾讯云短信功能初步使用
  4. XXXX大学课程设计说明书格式规范
  5. PalmOS开发教程
  6. 数学作图工具_数学趣览X 曾让古希腊人犯怵的三大几何作图难题
  7. 双眼融合训练一个月_视觉融合功能改善恢复如何训练
  8. 微信小程序开发全流程记录(从前台到后台,到发布)
  9. OverFeat笔记
  10. 如何像“二次元萌妹”小冰一样写诗创作和即兴编曲?