Home  >  Article  >  Backend Development  >  Detailed explanation of php recursive calls and static variable usage examples

Detailed explanation of php recursive calls and static variable usage examples

伊谢尔伦
伊谢尔伦Original
2017-06-30 11:27:071240browse

In PHP programming , recursive calls are often used with static variables. For the meaning of static variables, please refer to PHP Manual. I hope the following code will be more conducive to understanding recursion and static variables

<?php 
//下面代码会画出一个很漂亮的叶子 
// 定义 PI 一分的角度的值 
define("PII", M_PI/180); 
// 新建图像资源,并定义其背景为 白色,前景色为 黑色 
$im = imagecreate(670,500); 
$white = imagecolorallocate($im, 0xFF, 0xFF, 0xFF); 
$g = imagecolorallocate($im, 0x00, 0x00, 0x00); 
// 从下面实例化的代码可以得知,初始值 $x, $y, $L, $a 别分为 300, 500, 100, 270 
function drawLeaf($g, $x, $y, $L, $a) { 
global $im; 
$B = 50; 
$C = 9; 
$s1 = 2; 
$s2 = 3 ; 
$s3 = 1.2; 
if($L > $s1) { 
// 计算叶子的定位 上面 
$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); 
// 计算叶子的定位 下面 
$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); 
// 别分画叶子的主干以及叶面 
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); 
// 再次递归调用本身 
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); 
} 
} 
// 实例化 
drawLeaf($g, 300, 500, 100, 270); 
header("Content-type: image/png"); 
imagepng($im); 
?>


In PHP programming, recursive calls are often associated with Static variables are used. The meaning of static variables can be found in the PHP manual. I hope the following code will be more conducive to understanding recursion and static variables

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 static_function Function is run for the second time, variable i is still retained and not released because it is a static variable, and the self-increasing value can be obtained.

The above is the detailed content of Detailed explanation of php recursive calls and static variable usage examples. For more information, please follow other related articles on the PHP Chinese website!

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