js递归函数
递归函数:是指函数调用自己本身,则称该函数为递归函数。
//以下就是递归函数,但是会死循环,因为没有出口 function f(){ console.log('递归函数'); f(); } f();
递归运算会无终止地自身调用。因此,在递归运算中要结合 if 语句进行控制,只有在某个条件成立时才允许执行递归,否则不允许调用自身。
例子1:
// 1 1 2 3 5 8 13 21..... 根据规律求出第20个数是多少 //规律 n = (n-1) + (n-2) 就是当前这个数等于前面两个数相加的和 function f(n){ if (n <= 1 ) { return n; }else{ return f(n-1) + f(n-2); } } var a = f(9);//求第几个数是多少 就是第8个数+第7个数的和 console.log(a);//打印34
例子2:
//0 1 3 6 10 15 21... 求第20位数是多少 //规律:(n-1) + n function f(n){ if (n == 0) { return 0; }else{ return n + f(n-1); } } console.log(f(0)); console.log(f(1)); console.log(f(2)); console.log(f(3)); console.log(f(20));
例子3:
var obj = { a:{ name:"john", age:26, sex:"male", child:{ firstChild:"mak", laseChild:"loy" } }, b:{ name:"joe", age:28, sex:"female", child:{ firstChild:"bill", secondChild:"ruth", laseChild:"yoki", c:{ name:'lige', age:33 } } } }; function getObjValue(obj){ for(var k in obj){ if(typeof obj[k] !== "object"){ console.log(obj[k]); //递归出口 }else{ getObjValue(obj[k]); //obj[k]是一个对象 继续调用自身遍历 } } }; getObjValue(obj);

浙公网安备 33010602011771号