Доброго дня.
Вопрос простой и сложный одновременно: есть ли способы вызвать переполнение стэка без рекурсии? Встретил такой вопрос на одном из собеседований, ответил, разумеется, что это невозможно, но мне сказали, что можно.
function foo() {
bar();
}
function bar() {
foo();
}
foo();
VM204:1 Uncaught RangeError: Maximum call stack size exceeded
at bar (<anonymous>:1:18)
at foo (<anonymous>:1:18)
at bar (<anonymous>:1:18)
at foo (<anonymous>:1:18)
at bar (<anonymous>:1:18)
at foo (<anonymous>:1:18)
at bar (<anonymous>:1:18)
at foo (<anonymous>:1:18)
at bar (<anonymous>:1:18)
at foo (<anonymous>:1:18)
Рекурсия подразумевает, что функция вызывает саму себя. В моём примере ни одна из функций не является рекурсивной.
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция A {\displaystyle A} A вызывает функцию B {\displaystyle B} B, а функция B {\displaystyle B} B — функцию A {\displaystyle A} A.