<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积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
全新升级,重磅新增80h+,助力成为”多端+全栈”工程师紧跟企业人才要求,上万学员学习验证,6年持续迭代经典好课0基础到高阶实战再到源码解析,技术深度、宽度全面发展,快速提升工作竞争力
50 4
10 1
12 3
9 9
10 9
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星