JS中递归函数

递归函数

  • 什么是递归?
    • 在编程世界里面,递归就是一个自己调用自己的手段
    • 递归函数: 一个函数内部,调用了自己,循环往复
// 下面这个代码就是一个最简单的递归函数
// 在函数内部调用了自己,函数一执行,就调用自己一次,在调用再执行,循环往复,没有止尽
function fn() {
  fn()
}
fn()
  • 其实递归函数和循环很类似

  • 需要有初始化,自增,执行代码,条件判断的,不然就是一个没有尽头的递归函数,我们叫做 死递归

二、利用递归解决的一些问题

2.1 利用递归求100的阶乘

  • 思路:求100的阶乘,就是99的阶乘乘100,相当于就n的阶乘就等于n*(n-1)的积
function a(n) {
    if (n == 1) {
        return 1
    }
    return a(n - 1) * n
}
console.log(a(100));

2.2 编写一个递归函数dep(), 实现需求:一年薪资是10k,涨幅每年0.5%,那么50年后薪资多少钱?

  • 思路:每年都要涨,从10000开始,每年的工作都去去年的1.005倍
function dep(y) {
    if (y == 1) {
        return 10000
    }
    return dep(y - 1) * 1.005
}
var a = dep(50)
console.log(a);

2.3 利用递归求斐波那契数列

  • 斐波那契数列 : 1 1 2 3 5 8 13 21 34 ...
  • 写一个函数,传入 5,输出 斐波那契数列 第五位的数字是多少?
  • 思路:首先我们可以看出第一项和第二项都是一,我们递归的时候在n等于1或者2的时候就返回1结束递归,然后我们可以看出前面2个数相加等于第三个数,所以第n的数就等于第n-1和第n-2个数相加,然后利用递归。
function fun(n) {
    if (n == 1 || n == 2) {
        return 1
    }
    return fun(n - 1) + fun(n - 2)
}
var res = fun(5)
console.log(res);

猜你喜欢

转载自blog.csdn.net/liu0218/article/details/126549252