Home > Backend Development > PHP Tutorial > Describe PHP recursive algorithm_PHP tutorial

Describe PHP recursive algorithm_PHP tutorial

WBOY
Release: 2016-07-15 13:27:51
Original
881 people have browsed it

PHP is still relatively commonly used, so I studied the PHP recursive algorithm and shared it with you here. I hope it will be useful to everyone. PHP, a nested abbreviation name, is the abbreviation of English Hypertext Preprocessing Language (PHP: Hypertext Preprocessor). PHP is an HTML embedded language. It is a scripting language that is executed on the server side and embedded in HTML documents. The style of the language is similar to C language. It is now widely used by many website programmers. PHP's unique syntax is a mix of C, Java, Perl, and PHP's own innovative syntax.

It can execute dynamic web pages faster than CGI or Perl. Compared with other programming languages, dynamic pages made with PHP embed the program into the HTML document for execution, and the execution efficiency is much higher than CGI that completely generates HTML tags; compared with the scripting language JavaScript, which is also embedded in the HTML document In contrast, PHP is executed on the server side, making full use of the server's performance; the PHP execution engine will also store PHP programs that users frequently access in memory, so other users do not need to recompile the program when they access the program again. Just execute the code in the memory directly, which is also one of the manifestations of PHP's high efficiency.

PHP has very powerful functions. PHP can implement all CGI or JavaScript functions and supports almost all popular databases and operating systems. Here we introduce the PHP recursive algorithm in detail.

PHP recursive algorithm code:

<ol class="dp-xml">
<li class="alt"><span><span class="tag"><?</SPAN><SPAN class=tag-name>php</SPAN><SPAN> </SPAN></SPAN><LI class=""><SPAN>//定义PI一分的角度的值  </SPAN><LI class=alt><SPAN>define("PII",M_PI/180);  </SPAN><LI class=""><SPAN> </SPAN><LI class=alt><SPAN>//新建图像资源,并定义其背景为白色,前景色为黑色  </SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute>im</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>imagecreate</SPAN><SPAN>(670,500);  </SPAN></SPAN><LI class=alt><SPAN>$</SPAN><SPAN class=attribute>white</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>imagecolorallocate</SPAN><SPAN>($im,0xFF,0xFF,0xFF);  </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute>g</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>imagecolorallocate</SPAN><SPAN>($im,0x00,0x00,0x00);  </SPAN></SPAN><LI class=alt><SPAN> </SPAN><LI class=""><SPAN>//从下面实例化的代码可以得知,初始值$x,$y,$L,$a别分为300,500,100,270  </SPAN><LI class=alt><SPAN>functiondrawLeaf($g,$x,$y,$L,$a){  </SPAN><LI class=""><SPAN>global$im;  </SPAN><LI class=alt><SPAN>$</SPAN><SPAN class=attribute>B</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>50</SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute>C</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>9</SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>$</SPAN><SPAN class=attribute>s1</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>2</SPAN><SPAN>;  </SPAN></SPAN><LI class=""><SPAN>$</SPAN><SPAN class=attribute>s2</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>3</SPAN><SPAN>;  </SPAN></SPAN><LI class=alt><SPAN>$</SPAN><SPAN class=attribute>s3</SPAN><SPAN>=</SPAN><SPAN class=attribute-value>1</SPAN><SPAN>.2;  </SPAN></SPAN><LI class=""><SPAN>if($L</SPAN><SPAN class=tag>></span><span>$s1){  </span></span></li>
<li class="alt"><span>//计算叶子的定位上面  </span></li>
<li class="">
<span>$</span><span class="attribute">x2</span><span>=$x+$L*cos($a*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y2</span><span>=$y+$L*sin($a*PII);  </span>
</li>
<li class="">
<span>$</span><span class="attribute">x2R</span><span>=$x2+$L/$s2*cos(($a+$B)*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y2R</span><span>=$y2+$L/$s2*sin(($a+$B)*PII);  </span>
</li>
<li class="">
<span>$</span><span class="attribute">x2L</span><span>=$x2+$L/$s2*cos(($a-$B)*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y2L</span><span>=$y2+$L/$s2*sin(($a-$B)*PII);  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>//计算叶子的定位下面  </span></li>
<li class="">
<span>$</span><span class="attribute">x1</span><span>=$x+$L/$s2*cos($a*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y1</span><span>=$y+$L/$s2*sin($a*PII);  </span>
</li>
<li class="">
<span>$</span><span class="attribute">x1L</span><span>=$x1+$L/$s2*cos(($a-$B)*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y1L</span><span>=$y1+$L/$s2*sin(($a-$B)*PII);  </span>
</li>
<li class="">
<span>$</span><span class="attribute">x1R</span><span>=$x1+$L/$s2*cos(($a+$B)*PII);  </span>
</li>
<li class="alt">
<span>$</span><span class="attribute">y1R</span><span>=$y1+$L/$s2*sin(($a+$B)*PII);  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>//别分画叶子的主干以及叶面  </span></li>
<li class=""><span>ImageLine($im,(int)$x,(int)$y,(int)$x2,(int)$y2,$g);  </span></li>
<li class="alt"><span>ImageLine($im,(int)$x2,(int)$y2,(int)$x2R,(int)$y2R,$g);  </span></li>
<li class=""><span>ImageLine($im,(int)$x2,(int)$y2,(int)$x2L,(int)$y2L,$g);  </span></li>
<li class="alt"><span>ImageLine($im,(int)$x1,(int)$y1,(int)$x1L,(int)$y1L,$g);  </span></li>
<li class=""><span>ImageLine($im,(int)$x1,(int)$y1,(int)$x1R,(int)$y1R,$g);  </span></li>
<li class="alt"><span> </span></li>
<li class=""><span>//再次递归调用本身  </span></li>
<li class="alt"><span>drawLeaf($g,$x2,$y2,$L/$s3,$a+$C);  </span></li>
<li class=""><span>drawLeaf($g,$x2R,$y2R,$L/$s2,$a+$B);  </span></li>
<li class="alt"><span>drawLeaf($g,$x2L,$y2L,$L/$s2,$a-$B);  </span></li>
<li class=""><span>drawLeaf($g,$x1L,$y1L,$L/$s2,$a-$B);  </span></li>
<li class="alt"><span>drawLeaf($g,$x1R,$y1R,$L/$s2,$a+$B);  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span> </span></li>
<li class="alt"><span>//实例化  </span></li>
<li class=""><span>drawLeaf($g,300,500,100,270);  </span></li>
<li class="alt"><span>header("Content-type:image/png");  </span></li>
<li class=""><span>imagepng($im);  </span></li>
<li class="alt">
<span></span><span class="tag">?></span><span>在我个人的PHP编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考PHP手册。希望下面的代码,会更有利于对递归以及静态变量的理解  </span>
</li>
<li class=""><span> </span></li>
<li class="alt"><span>header("Content-type:text/plain");  </span></li>
<li class=""><span>functionstatic_function(){  </span></li>
<li class="alt">
<span>static$</span><span class="attribute">i</span><span>=</span><span class="attribute-value">0</span><span>;  </span>
</li>
<li class="">
<span>if($i++</span><span class="tag"><</span><span class="tag-name">10</span><span>){  </span>
</li>
<li class="alt"><span>echo$i."n";  </span></li>
<li class=""><span>static_function();  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>static_function(); </span></li>
</ol>
Copy after login

This code will output numbers from 1 to 10. When the static_function function runs for the second time, the variable i is still retained and not released because it is a static variable, and the auto-incremented value can be obtained.


www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/446491.htmlTechArticlePHP is still relatively commonly used, so I studied the PHP recursive algorithm and share it with you here. Hope it's useful to everyone. PHP, a nested abbreviation name, is the English super...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template