factorial是函数里默认阶乘的吗?

factorial是函数里默认阶乘的吗?

http://img1.sycdn.imooc.com//climg/5ff829d109c512d605370079.jpg
如果这factorial改成别的名字也有阶乘吗?

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

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

1回答
好帮手慕张 2021-01-08 19:17:10

同学你好,factorial不是函数里默认阶乘,factorial只是一个函数名字,同学可以自定义函数名字的,并不是固定写法。函数内部调用自己,形成递归,这里的factorial(n-1)就是在函数的内部再次调用自己的意思。

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

​祝学习愉快!

  • 提问者 wt涛 #1

     return n*factorial(n-1);
    这句也没循环啊?为何会逐一阶乘的?



    2021-01-08 19:32:14
  • 好帮手慕张 回复 提问者 wt涛 #2

    同学你好,“ return n*factorial(n-1);”这是递归的写法,递归函数内部语句可以调用这个函数自身,从而发起对函数的一次迭代。在新的迭代中,又会执行函数自身的语句,从而有产生一次迭代。当执行到某一次时,也就是说满足递归出口条件,函数就不再进行新的迭代,函数则会被一层层的返回。

    1、例如下图计算4的阶乘,首先调用factorial(4),参数n =4.返回值为4*factorial(3),但是这个返回值调用了函数factorial,那么就需要内层调用factorial执行完毕之后,第一次调用factorial才会返回具体的值。

    2、调用factorial(3),factorial(3)返回值为3*factorial(2),然后执行完毕;

    3、然后继续往下执行,调用factorial(2),factorial(2)的返回值为2*factorial(1),符合if判断条件,停止调用,最后输出结果。

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

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

    祝学习愉快!


    2021-01-09 11:20:40
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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