php中的递归调用函数返回值,深入理解php递归函数返回值的正确用法

本文介绍了php递归函数中返回值的正确用法,php递归函数中使用return返回值需要注意哪些问题,以加深对php递归函数的理解。

php递归函数返回值

例子,php递归函数返回值写法。

代码示例:

0) {

$n--;

return sum($n,$s);

}else{

return $s;

}

}

$sum = 0;

echo sum(5,$sum);

在使用php递归函数时,会遇到php递归返回值时出现的问题。

通常问题都出在递归函数的返回值上。

最初的php递归函数的例子:

代码示例:

以上代码中,else里面是有问题的。在这里执行的test没有返回值。

虽然满足条件$i < 3时 return $i整个函数还是不会返回值的。

对以上php递归返回值函数做如下修改:

代码示例:

< ?php

function test($i)

{

$i -= 4;

if($i < 3)

{

return $i;

}

else

{

return test($i); //增加return, 让函数返回值

}

}

echo test(30);

?>

二、对php递归函数的理解

递归函数为自调用函数,在函数体内直接或间接自己调用自己,但需要设置自调用的条件,若满足条件,则调用函数本身,若不满足则终止本函数的自调用,然后把目前流程的主控权交回给上一层函数来执行。

例子:

代码示例:

0){

test($n-1);

}else{

echo "";

}

echo $n." &nbsp"

}

test(2)

?>

这个例子最终的输出结果是2 1 00 1 2

分析:

第一步,执行test(2),echo 2,然后因为2>0,执行test(1), 后面还有没来得及执行的echo 2

第二步,执行test(1),echo 1,然后因为1>0,执行test(0),同样后面还有没来得及执行的 echo 1

第二步,执行test(0),echo 0,执行test(0),echo 0, 此时0>0的条件不满足,不在执行test()函数,而是echo “”,并且执行后面的 echo 0

此时函数已经不再调用自己,开始将流程的主控权交回给上一层函数来执行,也就是开始执行刚刚所有test()函数没来得及输出的最后一个echo,0的一层是1也就是输出1 1的上一层是2 也就是输出2 2没有山一层 所以呢 输出的内容就是2 1 00 1 2

三、php递归函数中使用return返回值需要注意哪些问题?

php递归函数中使用return时无法正确返回想要的值怎么办?

例子:

代码示例:

function test($i){

$i-=4;

if($i<3){

return $i;

}else{

test($i);

}

}

echotest(30);

以上代码在运行进,这个函数的else里面是有问题的。在这段代码里面执行的结果是没有返回值的。

虽然满足条件 $i<3 时return $i整个函数还是不会返回值的。

对上面的PHP递归函数,做如下修改:

代码示例:

function test($i){

$i-=4;

if($i<3){

return $i;

}else{

return test($i);//增加return,让函数返回值

}

}

echotest(30);

如此,在调用php递归函数时,就可以返回需要的值了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值