php自界说函数之递归函数

递归函数,递归只是一个名字,而递归函数的划定:函数体内挪用函数自己。

这须要一定的头脑明确深度,本章学习历程当中,假定你着实是有头脑没法跟上的地方,可以跳过本章不用学习。

华夏棋牌由于,现实使射中,用递归有用到,但是应用量不会很年夜。递归在现实使射中主要是用在:文件和文件夹操作的时间有应用到。

处置赏罚赏罚措施:
华夏棋牌万一你的头脑跟不上本章,你可以直接明确本块的原理后,用现成的文件和文件夹处置赏罚赏罚函数或文件处置赏罚赏罚类便可以。

我说几个头脑上的盲区:

华夏棋牌    1.代码是从上到下推行的,一切代码没有exit等阻拦符,函数必须推行完。

华夏棋牌    2.假定函数从函数A跳至函数B后,必须把函数B推行完成再推行函数A余下的代码。

    3.递归函数必须要能推行完有阻拦条件,否则函数就会限入去世循环。函数会永世的自我推行下去。

华夏棋牌我们来写一代码码来明确一下:

<?php

$num = 10;


//挪用一次函数A();
A($num);



function A( $arg ){

   echo $arg;

   //在函数A外面去,跑去推行函数B去了
   B($arg);


   echo '我们须要赓续的起劲,起劲到上天都为我们激动';


   echo $arg.'<br />';
}

function B( $number ){

       echo $number;


       echo '俺是狗蛋,推行完了<br />';

}


?>

经由历程上例年夜家会发现:

    1.推行函数A到一半的时间,跑去推行了函数B

华夏棋牌    2.推行完函数B,先显示出来的是:“俺是狗蛋,推行完了”,接着显示的才是:“我们须要赓续的起劲,起劲到上天都为我们激动”

    3.也就是证清晰了了我们所说头脑盲区外面的内容,代码从上到下推行,代码必须推行完。

    我们来写一个质朴的递归代码,让函数自己挪用自己。

<?php

$n = 2;

function dg( $n ){

   echo $n.'<br />';

   $n = $n - 1;

   if($n > 0){
       //在函数体内挪用了dg自己哟
       dg($n);

   }else{

       echo '--------------';
   }

   echo '俺是狗蛋,俺还没推行' . $n . '<br />';

}
?>

你猜猜显示效果是甚么?为甚么这样?

我们来仔细推理一次:

    1.第一次挪用dg(),将数字$n = 2传到dg中,先显示出来了2

    2.然后将$n - 1 $n的值为了1

华夏棋牌    3.接着断定$n 能否年夜于0,一定是年夜于0的,以是挪用递归自己,再把自己推行一次。

    4.而第二次在推行自己dg()的时间,而最下面的 echo '俺是狗蛋,俺还没推行' . $n . '
'; 还没有推行到。期待推行完成后再来推行

    5.$n此时即是1 ,以是显示出来1。

华夏棋牌    6.$n把自己减了一次,$n的效果为0

    7.$n年夜于0一定不培植的,以是显示了一条:"--------------"

    8.而这个时间该推行:echo '俺是狗蛋,俺还没推行' . $n . '
';

    9.第二次推行dg()推行完成。第一次dg()的代码还没推行完,将第4点中的余下代码推行完。


一连学习
||
<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内挪用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗蛋,俺还没推行' . $n . '<br />'; } ?>
提交重置代码
章节
条记
提问
课件
反映
捐赠

php入门教程之一周学会PHP

  • 推荐课程
  • 议论
  • 问答
  • 条记
  • 课件下载

sssfc

由于代码里没有挪用DG();一定是居心的,哈哈

1年前    添加回复 2

Dante

我也以为是居心的

Dante · 2019-02-15 10:22
回复

meleeZhao

<?php function a($n){ if($n==1){ return 1; }else{ return $n+a($n-1); } } echo a(100); ?>

1年前    添加回复 1华夏棋牌

回复

vec

<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内挪用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗

9个月前    添加回复 0华夏棋牌

回复

vec

<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内挪用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗

9个月前    添加回复 0

回复

JasperD

这课程能好悦目吗,感应很误导同砚啊

9个月前    添加回复 0

回复

青风百里

华夏棋牌<?php function ap($i = 1,$a = ['1' => 1]){ $a[$i+1] = 2*$a[$i] + 3; $i++; if ($i<10) { ap($i,$a); } var_dump($a); } $res = ap(); ?>

1年前    添加回复 0

回复

青风百里

<?php function ap($i = 1,$a = ['1' => 1]){//界说初始值,$a[1]为1,相当于数列a(n)辅弼为1;$i仅仅用于循环控制 $a[$i+1] = 2*$a[$i] + 3;//设置递推公式,该递推公式为a(n+1)=2*a(n)+3,在高中数学中,这是一个有数的数列递推公式 $i++; if ($i<10) {//递归函数,

1年前    添加回复 0华夏棋牌

回复

青风百里

<?php function ap($i = 1,$a = ['1' => 1]){//界说初始值,$a[1]为1,相当于数列a(n)辅弼为1;$i仅仅用于循环控制 $a[$i+1] = 2*$a[$i] + 3;//设置递推公式,该递推公式为a(n+1)=2*a(n)+3,在高中数学中,这是一个有数的数列递推公式 $i++; if ($i<10) {//递归函数,

1年前    添加回复 0

回复

ID是两颗心去旅行

议论区是学习的第二课堂啊。

1年前    添加回复 0

回复

luoshui

最后的代码有用果啊。

1年前    添加回复 0

回复

我只是一条咸鱼哈

代码有用果,欲望能完善ε=(´ο`*)))唉

1年前    添加回复 0

回复

我只是一条咸鱼哈

o(* ̄︶ ̄*)o

1年前    添加回复 0

回复

刘克庆

最后加个 dg($n); 就显示了

1年前    添加回复 0

回复

刘克庆

.......字数不够略 echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内挪用了dg自己哟 dg($n); }else{ echo '--------------'; } echo '俺是狗蛋,俺还没推行' .

1年前    添加回复 0

回复

刘克庆

<?php $n = 2; function dg( $n ){ echo $n.'<br />'; $n = $n - 1; if($n > 0){ //在函数体内挪用了dg自己哟 dg($n); }else{ echo '--------------';

1年前    添加回复 0

回复

推行没有任何效果出来华夏棋牌

[最新 阿栋 的回复] 须要挪用函数,加个dg($n)华夏棋牌

时间:4个月前

为啥第二个推行不出来???

[最新 益伦 的回复] 没有挪用函数,前面加个dg($n);便可以

时间:1年前

php递归函数怎样明确?

[最新 益伦 的回复] 写得很详细了,虽然我还不会写,然则逻辑基本弄清晰了

时间:2年前

手机用户238781832

效果和课本对不上

5个月前  1

久作不去世。

第二次推行dg()推行完成。第一次dg()的代码还没推行完,将第4点中的余下代码推行完。 外面的循环走完了,外面的循环才一连走

5个月前  0

博龙

<?php $flag = 5; function fn($flag){ echo $flag.'<br>'; $flag--; if($flag>0){ fn($flag); }else{ echo 'fn函数推行终了'; } } fn($flag); ?> 几个头脑上的盲区: 1.代码是从上到下推行的,一切代码没有exit等阻拦符,函数必须推行完。 2.假定函数从函数A跳至函数B后,必须把函数B推行完成再推行函数A余下的代码。 3.递归函数必须要能推行完有阻拦条件,否则函数就会限入去世循环。函数会永世的自我推行下去。

1年前  0

夜星斗

几个头脑上的盲区: 1.代码是从上到下推行的,一切代码没有exit等阻拦符,函数必须推行完。 2.假定函数从函数A跳至函数B后,必须把函数B推行完成再推行函数A余下的代码。 3.递归函数必须要能推行完有阻拦条件,否则函数就会限入去世循环。函数会永世的自我推行下去。

1年前  0

phpcn_u722

<?php $flag = 5; function fn($flag){ echo $flag.'<br>'; $flag--; if($flag>0){ fn($flag); }else{ echo 'fn函数推行终了'; } } fn($flag); ?>

2年前  0

课件暂不供应下载,使命职员正在整理中,前期请多关注该课程~