admin管理员组

文章数量:1794759

JS中递归函数

JS中递归函数

目录
  • 递归函数
  • 二、利用递归解决的一些问题
    • 2.1 利用递归求100的阶乘
    • 2.2 编写一个递归函数dep(), 实现需求:一年薪资是10k,涨幅每年0.5%,那么50年后薪资多少钱?
    • 2.3 利用递归求斐波那契数列

递归函数
  • 什么是递归?
    • 在编程世界里面,递归就是一个自己调用自己的手段
    • 递归函数: 一个函数内部,调用了自己,循环往复
// 下面这个代码就是一个最简单的递归函数 // 在函数内部调用了自己,函数一执行,就调用自己一次,在调用再执行,循环往复,没有止尽 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);

本文标签: 递归函数js