1.爬楼梯问题:
//规律遵循斐波那契数列
//指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
解决方案一:
function fn(n){
if(n<=2){
return n
}
let first=1;
let second=2;
let result=0
for(let i=3;i<=n;i++){
result=first+second;
first=second;
second=result;
}
return result;
}
解决方案二:(递归)
function fn(n){
if(n<=2){
return n;
}
return fn(n-1)+fn(n-2);
}
2.将数组转换成树形结构
var list=[{
id: 1,
name: '1',
}, {
id: 2,
name: '1-1',
parentId: 1
}, {
id: 3,
name: '1-1-1',
parentId: 2
}, {
id: 4,
name: '1-2',
parentId: 1
}, {
id: 5,
name: '1-2-2',
parentId: 4
}, {
id: 6,
name: '1-1-1-1',
parentId: 3
}, {
id: 7,
name: '2',
}]
//解决方案:
let tree=[]
function getTree(rootId,data){
let temp=[];
data.forEach(v=>{
if(!rootId&&!v.parentId){
root.push({
...v,
children:getTree(v.id,data)
});
}
if(v.parentId==rootId){
temp.push({
...v,
children:getTree(v.id,data)
});
}
})
return temp;
}