概述
递归
1,什么是递归函数:如果一个函数在内部可以调用其本身,那么这个函数就是递归函数
2,简单理解函数内部自己调用自己,这个函数就是递归函数
3,递归函数的作用和循环效果一样
死递归写法:
function fn() {
fn();
}
fn();
一般写法:递归里面必须加退出条件
var num = 1;
function fun() {
console.log("打印5句话");
if (num == 6) {
return;
//递归里面必须加退出条件
}
num++;
fn();
}
fn();
利用递归函数求1-n的阶乘1*2*3*4*5*..n
function fn(n) {
if (n == 1) {
return 1;
}
return n * fn(n - 1)
}
console.log(fn(3));
// 6
console.log(fn(4));
// 24
//详细分析:假如用户输入的是3
// return 3 * fn(3 - 1)
// return 3 * fn(2)
// return 3 * (2 * fn(1))
// return 3 * (2 * 1)
// return 3 * (2)
// return 6
利用递归函数求斐波那契数列(兔子序列)1,1,2,3,5,8,13,21.....
用户输入一个数字n就可以求出 这个数字对应的兔子序列值
我们只要知道用户输入是n,前面两项(n-1 n-2 )就可以计算出n 对应的序列值
function fb(n) {
if (n === 1 || n === 2) {
return 1;
}
return fb(n - 1) + fb(n - 2)
}
console.log(fb(3));
//2
console.log(fb(6));
//8
利用递归遍历数据
data数组中有两个对象1与2,1中又有两个对象11与12
var data = [{
id: 1,
name: '家电',
goods: [{ id: 11, name: '冰箱' }, { id: 12, name: '洗衣机' }]
}, {
id: 2,
name: '服饰'
}];
需求:我们想输入id号就可以拿到返回的数据对象
1,利用forEach 去遍历里面的每一个对象
function getID(json, id) {
json.forEach(function (item) {
// console.log(item); //2个数组元素
if (item.id == id) {
console.log(item);
//2,我们想要得到里层的数据 11 12 可以用递归函数来做
//里面要有goods这个数组并且数组的长度不为0
} else if (item.goods && item.goods.length > 0) {
getID(item.goods, id);
}
})
}
console.log(getID(data, 1));
console.log(getID(data, 2));
console.log(getID(data, 11));
console.log(getID(data, 12));
根据上面的只是打印,现在要求数据返回给我们
var data = [{
id: 1,
name: '家电',
goods: [{
id: 11,
name: '冰箱',
goods: [{
id: 111,
name: '海尔冰箱'
}, {
id: 112,
name: '美的洗衣机'
}]
}, {
id: 12,
name: '洗衣机'
}]
}, {
id: 2,
name: '服饰'
}];
//想输入id号就可以拿到返回的数据对象
//1,利用forEach 去遍历里面的每一个对象
function getID(json, id) {
var o = {};
json.forEach(function (item) {
// console.log(item); //2个数组元素
if (item.id == id) {
// console.log(item); 不需要打印直接保存给o就可以了
o = item
//2,我们想要得到里层的数据 11 12 可以用递归函数来做
//里面要有goods这个数组并且数组的长度不为0
} else if (item.goods && item.goods.length > 0) {
o = getID(item.goods, id);
}
});
return o;
}
// getID(data, 1)
// getID(data, 2)
// getID(data, 11)
// getID(data, 12)
console.log(getID(data, 1));
console.log(getID(data, 2));
console.log(getID(data, 11));
console.log(getID(data, 12));
console.log(getID(data, 111));
console.log(getID(data, 112));
最后
以上就是温婉蓝天为你收集整理的递归 函数递归 的全部内容,希望文章能够帮你解决递归 函数递归 所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复