Почему можно вызвать функцию в ее определении?
У нас есть функция foo():
bool foo(int a)
{
if (a == 3)
{
foo(a+1);
}
return false;
}
Почему мы можем ее вызвать прямо в определении?
Ответы (1 шт):
Автор решения: αλεχολυτ
→ Ссылка
Вызов функции из самой себя называется рекурсией. Понятно, что для обеспечения работоспособности такого кода должно быть достижимо условие завершения рекурсии. Иначе (при заведомо ограниченном объеме памяти) программа грохнется с переполнением стека (Stack overflow).
Для С++ рекурсивный вызов разрешён для любых функций кроме main. Ссылка на черновик стандарта:
Recursive calls are permitted, except to the
mainfunction