哪个网站可以做加工,wordpress你好多莉,健身器材网站源码,如何建设国际网站递归 递归是一种解决问题的方法#xff0c;通常我们可以理解成函数调用自身#xff1b; 什么递归#xff1f;递归怎么写#xff1f; 首先直接调用自身的方法和函数#xff0c;他是一个递归#xff0c;我们看代码#xff1a;
复制代码 var recursiveFun function(params…递归 递归是一种解决问题的方法通常我们可以理解成函数调用自身 什么递归递归怎么写 首先直接调用自身的方法和函数他是一个递归我们看代码
复制代码 var recursiveFun function(params){recursiveFun(params);
}
// or
var recursiveFun1 function(params){recursiveFun2(params);
}
var recursiveFun2 function(params){recursiveFun1(params);
}
复制代码假设现在我们要执行recursiveFun() or recursiveFun1(); 从上面函数我们能知道他会一直重复调用因此每个递归函数都需要有边界条件我们通俗一点可以叫它停止点作用是为了防止无限递归。 如果防止递归停止无限递归带来的问题 我们先思考一个问题如果忘记加上停止递归函数的边界条件会发生什么呢 会一直执行函数吗 答案是不会递归并不会无限的执行下去浏览器会抛出错误也就是所谓的栈溢出错误我们可以通过以下代码来测试 var i 0;
var recursiveFun function(){i;recursiveFun();
}
try {recursiveFun();
} catch (err) {console.log(i${i}error:${err})
}
复制代码 以上是运行结果从图中我们能看出在执行15661次后浏览器给我们抛出了错误RangeError: Maximum call stack size exceeded 超过最大调用栈大小 我们如何停止递归呢我们只需要加一个条件即可假设我们条件是当i累加到100的时候停止。代码如下 var i 0;
var recursiveFun function(){if (i 100) return;i;recursiveFun();
}
try {recursiveFun();
} catch (err) {console.log(i${i}error:${err})
}
复制代码总结 我们得到一个结论具有停止递归的边界条件很重要; 转载于:https://juejin.im/post/5cb02d15f265da03b8583fd3