1.概念:
当函数直接或间接调用自己的时候,则发生了递归
2.场景:
(1)数据的定义是按递归定义的。(Fibonacci函数)
(2)问题解法按递归算法实现。(回溯)
(3)数据的结构形式是按递归定义的。(树的遍历,图的搜索)
3.缺点:
运行效率较低,递归次数过多容易造成栈溢出等
4.例子:
(1)斐波那契 1、1、2、3、5、8、13、21...
const a = function (n){
if (n == 0) {
return n;
}else if (n == 1) {
return n;
}else{
return a(n-1)+a(n-2);
}
}
//console.log(a(8))
(2)找出传入值的一个key值
function a(data,item){ var arr = []; if (argular.isArray(data)) { data.forEach(function(n){ if (n === item) { return data[item]; }else if (argular.isArray(n) || angular.isObject(n)) { return a(n,item) } }) }else{ for (var key in data) { if (key === item) { arr.push(data[item]); console.log(arr) return data[item]; }else if (argular.isArray(key) || angular.isObject(key)) { return a(data[key],item); } } } } var data = {a:'1010',b:[{name:'b',age:'12',money:'20'},{name:'cc',age:'14',money:'30'}]} a(data,'money')
(3)求数组中的最大数
function maxNum(arr,len) { if (len == 1) { return arr[0] }else{ let Max1 = maxNum(arr,len-1); return (Max1 > arr[len-1]) ? Max1 : arr[len-1]; } } var a = [10,20,6,9,4,8]; console.log(maxNum(a,6))