目录
- 递归函数
- 二、利用递归解决的一些问题
- 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中递归函数
发布评论