Пытаюсь разобраться в рекурсии. Почему когда я пишу так:
<script type="text/javascript">
function recursMe(param) {
if (param < 0) { //base case
return -1;
}
else {
//some code here
recursMe(param);
}
}
recursMe(10);
</script>
или так (используя косвенную рекурсию):
<script type="text/javascript">
function recursMe(param) {
if (param < 0) { //base case
return -1;
}
else {
//some code here
//recursMe(param);
recursMe2(param);
}
}
function recursMe2(param)
{
recursMe(param);
}
recursMe(10);
</script>
во всех браузерах я имею ошибку примерно такого характера:
Хром: Uncaught RangeError: Maximum call stack size exceeded
ie: Stack overflow at line:135
Когда я делаю косвенную рекурсию через setTimeout() так:
<script type="text/javascript">
function recursMe(param) {
if (param < 0) { //base case
return -1;
}
else {
//some code here
setTimeout("recursMe(" + param + ")", 1);
}
}
recursMe(10);
</script>
браузеры не выдают ошибку, хотя происходит та же ситуация: функция recursMe() вызывается много раз подряд. Почему так происходит?