When we build a website, the PHP language is the preferred language for programmers. We are quite familiar with PHP. Next, we will introduce PHP recursive algorithm to you. PHP, a nested abbreviation name, is the abbreviation of the English Super Text Preprocessor (PHP: Hypertext Preprocessor).
PHP is an HTML embedded language, a scripting language that embeds HTML documents executed on the server side. The language style is similar to that of C and is now widely used by many website programmers. PHP's unique syntax mixes C, Java, Perl, and PHP's self-innovative syntax.
It can execute dynamic web pages faster than CGI or Perl. Compared with other programming languages, dynamic pages made with PHP are embedded in HTML documents for execution, and the execution efficiency is much higher than CGI that completely generates HTML tags; compared with JavaScript, a scripting language that also embeds HTML documents, PHP executes on the server side, making full use of the performance of the server; the PHP execution engine will also reside the PHP programs frequently accessed by users in memory. When other users access this program again, they do not need to recompile the program, just directly execute the code in memory, 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. Let's introduce PHP recursive algorithm in detail here.
PHP recursive algorithm code:
< ?php
//Define the value of the angle of PI one point define("PII",M_PI/180);
//Create a new image resource and define its background as white and its foreground as black.
$im=imagecreate(670,500);
$white=imagecolorallocate($im,0xFF,0xFF,0xFF);
$g=imagecolorallocate($im,0x00,0x00,0x00);
// From the instantiated code below, we can see that the initial values $x, $y, $L, and $a are divided into 300,500,100,270, respectively.
functiondrawLeaf($g,$x,$y,$L,$a)
{ global$im; $B=50; $C=9; $s1=2; $s2=3; $s3=1.2;
if($L>$s1){
//Calculate the positioning of the leaves.
$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 positioning of the leaves 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);
//Draw the main trunk and leaf surface of the leaves separately
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);
//Recursively call itself again
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 PHP programming experience, recursive calls are often used with static variables. The meaning of static variables can be found in the PHP manual. I hope the following code will be more conducive to understanding PHP recursive algorithms and static variables
header("Content-type:text/plain"); functionstatic_function()
{
static$i=0;
if($i++<10)
{
echo$i."\n";
static_function();
}
}
static_function();
This PHP recursive algorithm code will output numbers from 1 to 10 in the same number. When the static_function function is run for the second time, the variable i is still retained and not released because it is a static variable, and thus the value of self-incrementation can be obtained.