In PHP programming, recursive calls are often used with static variables. The meaning of the static variable can be referenced in the PHP manual. Hopefully, the following code will be more useful for understanding recursion and static variables.
<?php//The code below will draw a very nice leaf//define the value of the PI point angle define ("PII", m_pi/180); Creates a new image resource and defines its background as white, with a foreground color of black $im = Imagecreate (670,500); $white = Imagecolorallocate ($im, 0xFF, 0xFF, 0xFF); $g = Imagecolorallocate ($im, 0x00, 0x00, 0x00); From the code instantiated below, it can be learned that the initial value $x, $y, $L, $a not divided into three, a, four, the function drawleaf ($g, $x, $y, $L, $a) {global $im; $B = 9; $s 1 = 2; $s 2 = 3; $s 3 = 1.2; if ($L > $s 1) {//Calculate leaf positioning above $x 2 = $x + $L * cos ($a * PII); $y 2 = $y + $L * sin ($a * pii); $x 2R = $x 2 + $L/$s 2 * cos ( ($a + $B) * PII); $y 2R = $y 2 + $L/$s 2 * sin (($a + $B) * PII); $x 2L = $x 2 + $L/$s 2 * cos (($a-$B) * PII); $y 2L = $y 2 + $L/$s 2 * sin (($a-$B) * PII); Calculate the positioning of the leaves below $x 1 = $x + $L/$s 2 * cos ($a * PII); $y 1 = $y + $L/$s 2 * sin ($a * PII); $x 1L = $x 1 + $L/$s 2 * cos (($a-$B) * PII); $y 1L = $y 1 + $L/$s 2 * sin (($a-$B) * PII); $x 1R = $x 1 + $L/$s 2 * cos (($a + $B) * PII); $y 1R = $y 1 + $L/$s 2 * sin (($a + $B) * PII); Do not divide the leaves of the trunk and the leaf imageline ($im, (int) $x, (int) $y, (int) $x 2, (int) $y2, $g); Imageline ($im, (int) $x 2, (int) $y 2, (int) $x 2R, (int) $y 2R, $g); Imageline ($im, (int) $x 2, (int) $y 2, (int) $x 2L, (int) $y 2L, $g); Imageline ($im, (int) $x 1, (int) $y 1, (int) $x 1L, (int) $y 1L, $g); Imageline ($im, (int) $x 1, (int) $y 1, (int) $x 1R, (int) $y 1R, $g); Again recursively calls itself Drawleaf ($g, $x 2, $y 2, $L/$s 3, $a + $C); Drawleaf ($g, $x 2R, $y 2R, $L/$s 2, $a + $B); Drawleaf ($g, $x 2L, $y 2L, $L/$s 2, $a-$B); Drawleaf ($g, $x 1L, $y 1L, $L/$s 2, $a-$B); Drawleaf ($g, $x 1R, $y 1R, $L/$s 2, $a + $B); }}//Instantiation of Drawleaf ($g, 300, 500, 100, 270); Header ("Content-type:image/png"); Imagepng ($im);?>
In PHP programming, recursive calls are often used with static variables. The meaning of static variables can be referenced in the PHP manual. Hopefully, the following code will be more useful for understanding recursion and static variables.
Header ("Content-type:text/plain"); function static_function () {static $i = 0; if ($i + <) {echo $i. "\ n"; Static_function (); } }
Static_function (); This code will output a number from 1 to 10. When the Static_function function is run for the second time, the variable i is still not released because it is a static variable, and thus the self-increment value can be obtained.