如果把echo $n;换成return $n;那么为什么返回的是2?

如果把echo $n;换成return $n;那么为什么返回的是2?

function test($n){

  echo $n;

  if ($n>0) {

    test($n-1);

  }else {

    echo "<-->";

  }

  return $n;

}

echo test(2); // 210<-->2

如果是执行完之后是一层层的跳出来的话,那么为什么返回不是0而是2

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

您好,return之所以结果为2,不是0,是因为在if中虽然调用了test方法,但是前两次的值0,1返回之后并没有进行接收或者打印,当最后echo test(2)时,返回的值是2,因此会打印出2。您可以使用下列代码测试,可以发现结果为210<-->012,因为前两次的返回值被打印出了。如果解决了您的问题,请采纳,祝学习愉快!

<?php
function test($n){
  echo $n;
  if ($n>0) {
  echo  test($n-1);
  }else {
    echo "<-->";
  }
  return $n;
}
echo test(2);


提问者 落叶伴秋风 2017-12-27 13:52:03

这个我看了,我的疑问是return $n的结果为什么是2?如果如果是执行完之后是一层层的跳出来的话,那么echo $n是012,我把echo换成return,应该返回的是0啊。

guly 2017-12-26 09:44:10

你好,建产看 http://blog.csdn.net/wyfalj/article/details/74330619?locationNum=2&fps=1,如果解决您的问题请采纳,祝学习愉快!

  • 提问者 落叶伴秋风 #1
    这个我看了,我的疑问是return $n的结果为什么是2?如果如果是执行完之后是一层层的跳出来的话,那么echo $n是012,我把echo换成return,应该返回的是0啊。
    2017-12-27 13:52:31
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师