4-4 编程练习-20年后月薪

4-4 编程练习-20年后月薪

相关代码:

<script>

        var year = 20; //年
        var t = 0.05; //涨幅

        // 计算每年工资
        function fn(y) {
            if (y == 1) return 10000;

            // 补充代码

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

        }

        document.write("20年后,小慕的月薪为" + fn(year));

    </script>

相关截图:

图片描述

正在回答

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

1回答

同学你好,代码可以实现需求。很棒!祝学习愉快!

  • 怎么执行到这个结果的,看不明白了,老师能不能写一下执行过程,还是不理解。

    2023-12-04 14:43:43
  • 同学你好,看一下这个思路:

    月薪一万元,工资每年涨幅5%。那么一年后的工资为10000+10000*0.05=10500,两年后的工资为10500+10500*0.05=11025 ,后面以此类推,得出的规律就是: 当年的月薪 = 上一年的月薪 + 上一年的月薪 * 0.05。

    而预留代码中给出了年份20,那么我们也就需要倒着往回计算,直到第一年。如下:

    https://img1.sycdn.imooc.com//climg/62b122630944f25706760395.jpg

    y表示的是年, fn(y -1) 获取的是上一年的月工资,fn(y - 1) * 0.05 表示上一年的涨幅。

    以第4年为例,当n等于4的时候,递归执行的过程如下:

    fn(4) = fn(3) + fn(3) * 0.05

    fn(3) = fn(2) + fn(2) * 0.05

    fn(2) = fn(1) + fn(1) * 0.05

    fn(1) = 10000

    得到fn(1)的值之后,再去推算fn(4)的值,如下:

    fn(1) = 10000

    fn(2) = fn(1) + fn(1) * 0.05 = 10000 + 10000 * 0.05 = 10500

    fn(3) = fn(2) + fn(2) * 0.05 = 10500 + 10500 * 0.05 = 11025

    fn(4) = fn(3) + fn(3) * 0.05 = 11025 + 11025 * 0.05 = 11576.25

    祝学习愉快~

    2023-12-04 14:50:13
  • 明白了,我自己也想通一个思路

        function fn(y) {

            if (y == 1) return 10000;


            // 补充代码

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

                

               //fn(1)  当执行递归fn(1) y==1 返回10000


               //fn(2) y不等于1 执行执行递归fn(2-1)就是递归fn(1) 返回的值10000 *(1+t) -> 10000 * 1.05 =10500

            

               //fn(3) y不等于1 执行递归fn(2)递归fn(2)的值 10500*1.05 =11025

        

               //fn(4) y不等于1 执行递归fn(3)  递归fn(3)的值 11025* 1.05=11576.25


            }


    2023-12-04 15:27:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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