3-8习题有一些疑问,麻烦解释一下!

3-8习题有一些疑问,麻烦解释一下!

我的思路:初始值    $n=6;    $m=9;    执行函数

第一次进入函数体: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;        if        判断结束。继续向下走,    return sun(6,5)+6

在这里发生了问题?

return值只能返回一个。是后者覆盖前者!还是在函数体内第一次遇到return 返回的值彻底执行完毕后,不再继续执行剩余的代码;又或者执行剩余的代码,但不执行下面的return返回值的操作;

如果跳出了if继续执行return,那么上述递归将不会结束,是吗?

正在回答

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

2回答

你好,运行的逻辑为:

第一次进入函数体: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;   

如果解决您的问题问题请采纳,祝学习愉快!

Harbird 2019-01-29 19:03:44

最后return $n;    当一个函数执行到return   不是直接跳出函数么,为什么会return 6

不懂为什么会直接执行 9+8+7+6

  • 您好,当函数执行到return时是会跳出循环,但题目中的代码在return sum($n,$m-1)+$m时是会重新调用sum函数的,会在调用完函数之后再return。而if中的return在满足条件之后,会返回$n的值,然后结束掉当前函数,那么sum($n,$m-1)+$m执行结束,开始return结果。祝学习愉快!
    2019-01-30 09:53:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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