递归问题

什么是递归?
我们知道,函数定义好之后,不能自己执行,需要使用函数调用语句才能自行,函数调用语句一般写在函数体外,而,将函数调用语句写在函数体内,称为递归函数
简单来说,一个函数内部调用自己,这个函数称为递归函数

+递归函数要有结束条件,不然会成为死递归

实列展示

//经典入职月薪问题:入职月薪为10K,每年涨5%,问10,20,30年后每月工资为多少?
我们先来分析:
	定义一个money(n)函数,
	money(1)=10
	money(2)=money(1)+money(1)*0.05
	money(3)=money(2)+money(2)*0.05
	...
	money(n)=money(n-1)+money(n-1)*0.05=money(n-1)*1.05
	所以我们得到了一个通用公式
	而结束条件为n=1时,money=10;
	所以我们可以开始写代码了
	   function money(n) {
            if (n === 1) {
                return 10 	//结束条件
            }
            return money(n - 1) * 1.05	//递归规律
        }
        document.write(money(10))
问题升级:求n年总薪水
其实思路是一样的,我们先来分析:
定义一个sum(n)函数,求总薪水
一年12个月,我们可以得到,第一年总薪水为:10*12
得到sum(1)=10*12
根据前面我们知道第二年总薪水=第一年总薪水*1.05
所以,前两年的总薪水=第一年总薪水+第二年总薪水
得到sum(2)=sum(1)+sum(1)*1.05
所以我们可以知道前三年的总薪水了
sum(3)=sum(2)+sum(2)*1.05
以此类推
sum(4)=sum(3)+sum(3)*1.05
sum(5)=sum(4)+sum(4)*1.05
sum(6)=sum(5)+sum(5)*1.05
...
sum(n)=sum(n-1)+sum(n-1)*1.05
我们又得到了一个通用公式
所以代码为:
 function sum(n) { //求n年总薪水
            if (n === 1) {
                return 10 * 12 //结束语句
            }
            return sum(n - 1) + sum(n - 1) + sum(n - 1) * 0.05  //递归规律
                // return sum(n - 1) * 2.05

        }
        document.write(sum(n))
传入参数就可以计算了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值