有个问题。

有个问题。

递归的时候,num-1不就是等于4了嘛?而且也已经返回值了,怎么它还能继续阶层下去呢?

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

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

3回答
好帮手慕夭夭 2020-06-11 09:56:21

@慕沐5572550同学你好,问题解答如下:

1.return理解的不对。return是给函数设置返回值的意思,执行它之后,后面的代码就不会执行了。

2.会一直调用,是因为函数中调用了函数本身。执行factorial函数时,函数里面调用了自己,所以又再次执行factorial函数,调用factorial,所以会一直调用下去。

直到num为1时,满足if条件,执行return 1。return执行之后,后面的代码就不会执行了。即后面factorial调用的代码就不会执行了。

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

再理解一下哦,祝学习愉快~

慕沐5572550 2020-06-10 22:19:56

你的意思是没有加for循环条件,它还能一直循环下去吗?

好帮手慕夭夭 2019-11-17 10:21:19

同学你好,是说的视频中如下代码吗?如果不是这里,请描述清楚哪里有疑惑。如果是,参考如下理解:

这是因为调用了函数本身:

第一次调用函数factorial(5),函数返回 5*factorial(4) 。factorial(4)就是调用函数并传入4。

第二次调用函数factorial(4),返回 4*factorial(3)。公式 5*factorial(4) 就相当于5*4*factorial(3)

第三次调用函数factorial(3),返回3*factorial(2)。公式5*4*factorial(3)就相当于5*4*3*factorial(2)

..... 依次类推,实现了阶乘。

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

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 挪威_ #1
    老师,就是说,第一次(console.log(factorial(5)),传参5的时候,return num返回了5,然后函数内部调用后factorial(num-1)返回了4,问题就是理解为factorial(4),再次调用的话,return 返回了4
    2020-02-26 13:06:36
  • 可以这样理解。
    2020-02-26 18:52:47
  • 可是为什么可以一直调用下去呢,是因为return有一直调用下去这个功能吗?
    2020-06-10 22:21:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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