老师这道题的执行流程是怎样的啊

老师这道题的执行流程是怎样的啊

http://img1.sycdn.imooc.com//climg/5c68d0150001f07c10001779.jpg
老师这道题的执行流程是怎样的啊sum($n,$m-1)+$m怎么理解啊

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

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

1回答
好帮手慕查理 2019-02-18 10:12:47

您好,初始值:$n=6,$m=9。开始调用sum函数sum(6,9):

第一次执行方法,条件不满足,return sum(6,9-1=8)+9;

开始再次调用sum方法,条件不满足,return sum(6,8-1=7)+8+9;

开始再次调用sum方法,条件不满足,return sum(6,7-1=6)+7+8+9;

开始再次调用sum方法,条件满足,return 6+7+8+9;

最后结果为:30。$m的值加在每次的sum($n,$m-1)调用后面,最后进行相加。

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

  • 提问者 代码两万行 #1
    最终返回求的是$n的值,但是每次运算都是$m-1 而且最终是$m的值累加等于30的 想知道为什么求n却在运算m?最后返回n为什么是m的结果?
    2019-02-18 14:26:03
  • 好帮手慕查理 回复 提问者 代码两万行 #2
    您好,最后return $n,$n的值为6,此时会将之前操作的sum($n,$m-1)+$m没有执行完的加法部分再次执行完成,所以最后是return 6,然后是+7+8+9,最后结果为30。每次运行$m-1是因为是回调函数,每次减操作之后再次调用sum方法。最后返回$n或者$m时结果是相同的,因为$m<=$n才会return。祝学习愉快!
    2019-02-18 15:33:52
  • 提问者 代码两万行 回复 好帮手慕查理 #3
    第一步 首先执行 函数调用 传值。 第二步 进入函数体进行if判断 结果$m<=$n的结果为false 跳过执行自身的代码段 进入下行代码。 第三步 调用sum函数自身 $n $m-1 +$m .. $m-1=8 8+9 将这个结果返回给调用者 第四部 进行if判断 $m<=$n的结果为false 跳过执行自身的代码段 进入下行代码。 第五步 调用sum函数自身 $n $m-1 +$m ..$m-1=7 7+9 将这个结果返回给调用者 第六步进行if判断 $m<=$n的结果为false 跳过自身代码段 进入下行代码 第七步 调用sum函数自身 $n $m-1 +$m ..$m-1=6 6+9 将这个结果返回给调用者 第八步进行if判断 $m<=$n的结果为true 真! 条件满足 进入if代码段 返回$n (我的疑惑就是在这一步!$n从始至终也没有做过运算, 也没有被赋值过! return是将$n的值返回给调用者可$n得值一直是6 并没有任何运算和赋值。 老师我只能理解到这里 我不知道 return 返回$n 求n得值 为什么会是30 ?)
    2019-02-18 20:18:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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