资源描述:
《非常精妙的php递归调用代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、非常精妙的PHP递归调用代码时间:2011-01-1215:15来源:未知作者:PHP100点击:987次【字号:大中小】?php//定义PI一分的角度的值define(PII,M_PI/180);//新建图像资源,并定义其背景为白色,前景色为黑色$im=imagecreate(670,500);$white=imagecolorallocate($im,0xFF,0xFF,0xFF);$g=imagecolorallocate($im,0x00,0x00,0x00);//从
2、,并定义其背景为白色,前景色为黑色$im =imagecreate(670,500);$white=imagecolorallocate($im,0xFF,0xFF,0xFF);$g =imagecolorallocate($im,0x00,0x00,0x00);//从下面实例化的代码可以得知,初始值$x,$y,$L,$a别分为300,500,100,270functiondrawLeaf($g,$x,$y,$L,$a){ global$im; $B=50; $C=9; $s1=2; $s2=3; $s3=1.2; if($L
3、>$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/$
4、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, (in
5、t)$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); //再次递归调用本身
6、 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");image
7、png($im);?>在我个人的PHP编程经验中,递归调用常常与静态变量使用。静态变量的含义可以参考PHP手册。希望下面的代码,会更有利于对递归以及静态变量的理解header("Content-type:text/plain");functionstatic_function(){ static$i=0; if($i++<10){ echo$i.""; static_function(); }}static_function();