最后的if语句为真的5 为什么不会显示?为什么不是显示 5,30?

最后的if语句为真的5 为什么不会显示?为什么不是显示 5,30?

最后的if语句为真的5 为什么不会显示?为什么不是显示 5,30? 

正在回答 回答被采纳积分+1

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

3回答
好帮手慕小尤 2020-04-13 17:55:21

同学你好,同学理解有点问题。在sum()方法中return sum($n,$m-1)+$m时,是会重新调用sum函数的,而不是结束sum函数。当if满足条件之后进行return,会返回$n的值,也就是结束掉当前函数,在echo sum(6,9);中输出返回的return $n。具体运行逻辑请同学查看第一个回答。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小尤 2020-04-13 15:32:36

同学你好,代码如下图所示:遍历四次则结束循环。并且循环到m等于6时,则结束遍历了返回数据是 6+7+8+9,经过运算得出结果为30,所以是不会输出5。

http://img1.sycdn.imooc.com//climg/5e9414a4099a275f02880236.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 穆菜鸟 #1
    我觉得应该是一个函数只会返回第一个return的结果,后面的return的结果都不会被采纳。如果在函数内部var_damp的话是可以看到会有第二个返回值的,只是函数不会把第二个输出,不知道这样理解对不对。
    2020-04-13 17:21:34
好帮手慕小尤 2020-04-13 10:55:19

同学你好,当函数执行到return时是会跳出循环,但题目中的代码在return sum($n,$m-1)+$m时是会重新调用sum函数的,会在调用完函数之后再return。而if中的return在满足条件之后,会返回$n的值,然后结束掉当前函数,那么sum($n,$m-1)+$m执行结束,开始return结果。运行的逻辑为:

第一次进入函数体:9<=6    flase ;    return sum(6,8)+9

第二次进入函数体:8<=6    flase ;    return sum(6,7)+8+9

第三次进入函数体:7<=6    flase ;    return sum(6,6)+7+8+9

第四次进入函数体:6<=6    ture ;    return 6+7+8+9;  // 30 

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 穆菜鸟 #1
    函数结束之前那个5,为什么不会被echo到?最后不是也是被return出来了吗?
    2020-04-13 14:51:40
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
PHP小白零基础入门
  • 参与学习           人
  • 提交作业       626    份
  • 解答问题       4930    个

想要学好Web后端开发的中流砥柱语言,本阶段为你轻松铺就扎实的基础,从前端网页布局的搭建到后台PHP开发,助你从零基础到掌握主流开发语言。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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