Home >Backend Development >PHP Tutorial >Very subtle PHP recursive calls and static variable usage_PHP tutorial

Very subtle PHP recursive calls and static variable usage_PHP tutorial

WBOY
WBOYOriginal
2016-07-21 15:14:47908browse

Copy the code The code is as follows:

//The following code will draw a very beautiful leaf
// Define the value of one minute of PI angle
define("PII", M_PI/180);
// Create a new image resource and define its background as white and the foreground color as black
$im = imagecreate(670,500);
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF);
$g = imagecolorallocate($im, 0x00, 0x00, 0x00);
// Example from below From the code, we can know that the initial values ​​$x, $y, $L, $a are divided into 300, 500, 100, 270 respectively
function drawLeaf($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 leaf
$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 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);
// Draw separately The trunk and leaf 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);
// Call itself recursively 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);
}
}
// Instantiate
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 found in the PHP manual. I hope the following code will be more helpful for understanding recursion and static variables
Copy the code The code is as follows:

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

static_function(); 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/326226.htmlTechArticleCopy the code as follows: ?php //The following code will draw a very beautiful leaf// Define PI 1 The value of the angle in minutes define("PII", M_PI/180); // Create a new image resource and define its background...
Statement:
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