A detailed example analysis of the PHP recursive algorithm

  • 2020-05-30 19:30:13
  • OfStack

When we were building a website, programmers preferred the PHP language. We're familiar with PHP, and we're going to introduce you to PHP recursion. PHP, a nested acronym, is short for the English hypertext preprocessing language (PHP:Hypertext Preprocessor).

PHP is an embedded HTML language, which is a scripting language embedded in HTML documents and executed on the server side. The language style is similar to C language, which is now widely used by many website programmers. PHP's unique syntax mixes C, Java, Perl, and PHP's own syntax.
It can perform dynamic web pages faster than CGI or Perl. Compared with other programming languages, PHP makes dynamic pages by embedding programs into HTML documents for execution, which is much more efficient than CGI, which fully generates HTML tags. Compared with the scripting language JavaScript, which is also embedded in HTML documents, PHP is executed on the server side, making full use of the performance of the server. The PHP execution engine will also host the PHP program frequently visited by users in memory. When other users visit this program again, they do not need to recompile the program, but just directly execute the code in memory, which is one of the efficient performance of PHP.

PHP is very powerful, all CGI or JavaScript functions PHP can achieve, and support almost all popular databases and operating systems. We will introduce the PHP recursive algorithm in detail here.

PHP recursive algorithm code:


< ?php    
// define PI1 Point of view  define("PII",M_PI/180);    
// Create a new image resource and define its background to be white and its foreground to be black     
$im=imagecreate(670,500);    
$white=imagecolorallocate($im,0xFF,0xFF,0xFF);  
$g=imagecolorallocate($im,0x00,0x00,0x00);    
// As you can see from the code instantiated below, the initial value $x,$y,$L,$a Don't be divided into 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){    
// Calculate the location of the leaf above     
$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);    
// Calculate the location of the leaf below    
$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);    
// Do not draw the main part of the leaf and the surface of the leaf    
 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);    
// Again, recursively call itself     
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);    
}    
}    
// instantiation     
drawLeaf($g,300,500,100,270);   
 header("Content-type:image/png");    
imagepng($im);    
?> 

In my personal programming experience with PHP, recursive calls are often used with static variables. You can refer to the PHP manual for the meaning of static variables. Hopefully, the following code will make it easier to understand the PHP recursive algorithm and static variables

header("Content-type:text/plain"); functionstatic_function()   
{    
static$i=0;    
if($i++<10)   
{    
echo$i."\n";   
static_function();    
}    
}    
static_function();  

This code for the PHP recursive algorithm will output Numbers from 1 to 10. At the second run of the static_function function, the variable i is kept from being released because it is a static variable, so that a self-incrementing value can be obtained.


Related articles: