一、1×2×3×4×5......×n 阶乘
function fn(n) {
if (n == 1) {
return 1;
}
return n * fn(n - 1)
}
console.log(fn(5));
执行步骤:
//return 5 * fn(4)
//return 5 * (4 * fn(3))
//return 5 * (4 * (3 * fn(2)))
//return 5 * (4 * (3 * (2 * fn(1))))
//return 5 * (4 * (3 * (2 * 1)))
---------------------------------------------------------------
//return 5 * fn(4)
//return 5 * 4 * fn(3)
//return 5 * 4 * 3 * fn(2)
//return 5 * 4 * 3 * 2 * fn(1)
//return 5 * 4 * 3 * 2 * 1
二、斐波那契数列(兔子序列) 1、1、2、3、5、8、13、21......
用户输入一个数字n就可以求出 这个数字对应的兔子序列值
我们只需要知道用户输入的n 的前面两项(n-1 n-2)就可以计算出n 对应的序列值
function funn(n) {
if (n == 1 || n == 2) {
return 1;
}
return funn(n - 1) + funn(n - 2);
}
console.log(funn(6));
执行步骤:
return funn(5) + funn(4)
return funn(4) + funn(3) + funn(3) + funn(2)
return funn(3) + funn(2) + funn(2) + funn(1) + funn(2) + funn(1) + funn(2)
return funn(2) + funn(1) + 1 + 1 + 1 + 1 + 1 + 1
return 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
return 8
三、递归遍历商品列表
要求输入id 返回数据对象
数据对象
var data = [
{
id: 1,
name: '家电',
goods: [
{
id: 11,
gname: '冰箱',
goods: [
{
id: 111,
gname: '海尔冰箱'
},
{
id: 112,
gname: '小天鹅冰箱'
},
]
},
{
id: 12,
gname: '洗衣机'
}]
},
{
id: 2,
name: '服饰'
}
]
用foreach 遍历每一个对象
function getID(json, id) {
var o = {};
json.forEach(function (item) {
if (item.id == id) {
//console.log(item);
o = item;
//2.获取里层数据 可以利用递归函数
//里面应该有goods这个数组 并且长度不为0
} else if (item.goods && item.goods.length > 0) {
o = getID(item.goods, id)
}
})
return o;
}
console.log(getID(data, 112));
网友评论