js递归理解及使用案例

递归在平时开发中会经常用到,递归是一种编程技巧,采取函数调用函数自身的方式工作

下面是递归的特点以及使用案例

一、递归是什么?

递归通俗地讲就是函数自己调用自己,它具有以下三要素

1、一个问题可以分解为更小的问题用同样的方法解决

2、分解后的子问题求解方式一样,不同的是数据规模变小

3、存在递归终止条件

下面看看递归解决实际问题的案例

二、使用案例

1.求1-100的和

//第n项的和 sum(n) = sum(n-1)+n 终止条件n=1
function sum(n){
    if(n==1) return 1
    return sum(n-1) + n
}
let amount = sum(100)
console.log(amount) // 5050

2.求一个数组前n项的和

function arrsum(arr,n){
    if(n==1) return arr[0]
    return arrsum(arr,n-1) + arr[n-1]
}
const arrs = [1,3,4,5,7]
console.log(arrsum(arrs,1))  // 1
console.log(arrsum(arrs,2))  // 4

3.小明入职第一年月薪是10k,涨幅每年是8%,那么20年后他的月薪是多少

// n年后薪资是fn(n) = fn(n-1)*(1+0.08)

function fn(n){
    if(n==1) return 100000
    return fn(n-1)*(1+0.08)
}
let wages = fn(10)
console.log(wages) // 199900.46
console.log(fn(2)) // 两年后月薪108000

4.斐波那切数列(又称黄金分割数列\兔子数列)

//1、1、2、3、5、8、13、21、34.....
//规律:自身等于前两项之和;
//(n-1)+(n-2)=n

  function fibonacci(n){
      if(n<=2){
           return 1
       }
       return fibonacci(n-1)+fibonacci(n-2)
   }
 console.log(fibonacci(6))   // 8

5. 一元钱可以买一瓶水,两个空瓶可以换一瓶水,三个瓶盖可以换一瓶水,10块钱可以换多少瓶水,30块钱又可以买多少瓶水

// 借鉴思路;1元   1瓶      
     //		2元  5瓶  		
     //		3元  11瓶		
     //		4元  17瓶		
     //		5元   23瓶	

function water(n){
    if(n==1){
        return 1
    }else if(n==2){
        return 5
    }else{
        return water(n-1) +6
    }
}
console.log(water(10)) //53
console.log(water(30)) //173
    

总结

递归在开发中用途广泛,除了以上情况,还有其他很多用途,比如vue后台开发系统中,侧边栏的渲染用到递归,还有一些数据不知道层级的情况会使用递归,比如定义递归组件等等

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空千古

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值