递归?
一般便是会问以下几点
1.什么是递归
广义上:程序调用自身的编程技巧称为递归( recursion),他是个算法。 有几个要素:递归需要有边界条件、递归前进段、递归返回段。
2.递归能够解决什么问题
阶乘(面试常问),菲波拉锲数(面试常问)、等 阶乘的公式是: n! = 1 * 2 * 3 * 4 * ... * (n-2) * (n-1) * n
3.怎么实现一个递归
//例如:计算5的阶乘 function jie(n){ if(n == 1){//跳出条件 return 1; } return n*jie(n-1); //5*jie(4) } var result = jie(5); console.log(result);
for循环里调用async await
需求,遍历一个数组,请求后台接口挨个改变数组每一项,全部改变后再次提交。
function getData(n){//通过该接口改变数据 // console.log('n',n) return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve(n+1)//原来的数据上+1 },400) }) } let data = [0,1,2,3,4,5,6,7,8,9] async function subData(){//提交数据保存 for(let i = 0;i<data.length;i++){ const res = await getData(data[i]) console.log(res) } //改变数据 console.log('sub')//提交数据 } subData()
改用递归的方式:
function getData(n){//通过该接口改变数据 // console.log('n',n) return new Promise((resolve,reject)=>{ setTimeout(()=>{ resolve(n+1)//原来的数据上+1 },400) }) } let data = [0,1,2,3,4,5,6,7,8,9] async function digui(index,arr){ if(index<data.length){ let res = await getData(data[index]) console.log(res) arr.push(res) await digui(index+1,arr) } return arr } async function subData(){ const newList = await digui(0,[]) // console.log(newList) console.log('sub') } subData()
大概就这么些了,希望对你有帮助。