麻烦老师解答下 下面这个函数的意思。

麻烦老师解答下 下面这个函数的意思。

 function fn(y) {

        if (y == 1) return 10000;


        // 补充代码

        return fn(y-1)*t+fn(y-1);

        

    }


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

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

1回答
好帮手慕然然 2021-09-12 17:55:09

同学你好,这是一个递归函数,函数中的代码解释如下:

当传入的参数值为1时(即 y==1),则执行return 10000;否则就执行return fn(y - 1) * t + fn(y - 1)。

其中,return 语句会终止函数的执行并返回函数的值,所以如果传入的参数值为1时,则直接返回10000,如图

https://img1.sycdn.imooc.com//climg/613dca990936694714710451.jpg

如果传入的参数值大于1,则返回fn(y - 1) * t + fn(y - 1),在返回的结果中存在fn函数,代表着fn函数会继续执行,直到传入的参数值变为1,满足y==1的条件,递归结束,如图

https://img1.sycdn.imooc.com//climg/613dce62092e666213690626.jpg

祝学习愉快!

  • 老师,能不能把fn(3)和fn(4)具体结果写出来下,递归这里函数的嵌套以及执行的顺序完全糊涂了

    2021-09-21 22:46:13
  • 这里有一个问题:return fn(y-1) * t + fn(y-1);不理解fn(y-1)的值为什么是10000,执行的顺序是什么,然道回到if进行在一次判断么?我也说不清楚了,就是return里的语句执行的顺序是参照什么来决定的。if和return里的执行顺序是什么样子的,每次执行完return语句,是不是还需要返回到if语句进行再一次判断,然后继续在执行return里的

    2021-09-21 22:54:12
  • 同学你好,这个递归函数的本质其实就是将函数一层层拆解,直到y==1满足条件,返回10000。然后将所有拆解的结果相加到一起。

    以fn(4)为例,拆解过程如下:

    https://img1.sycdn.imooc.com//climg/614ad45c09bd0f4c12740266.jpg

    祝学习愉快!

    2021-09-22 15:00:01
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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