<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>
登陆购买课程后可参与讨论,去登陆吧
同学你好,代码可以实现需求。很棒!祝学习愉快!
怎么执行到这个结果的,看不明白了,老师能不能写一下执行过程,还是不理解。
同学你好,看一下这个思路:
月薪一万元,工资每年涨幅5%。那么一年后的工资为10000+10000*0.05=10500,两年后的工资为10500+10500*0.05=11025 ,后面以此类推,得出的规律就是: 当年的月薪 = 上一年的月薪 + 上一年的月薪 * 0.05。
而预留代码中给出了年份20,那么我们也就需要倒着往回计算,直到第一年。如下:
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(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
祝学习愉快~
明白了,我自己也想通一个思路
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
}
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
6年持续迭代经典好课,0基础小白到高阶实战再深入框架源码解析,让你的前端技术深度、宽度全面发展。 课程每节课配套大量练习题,纯小白也能学的会,学的好,比市面上其他同类课程让你更快速提升前端编程竞争力。
54 4
10 1
13 3
10 9
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星