TransWikia.com

Почему можно вызвать функцию в ее определении?

Stack Overflow на русском Asked by n 1 k z z z on January 12, 2021

У нас есть функция foo():

 bool foo(int a)
    {
        if (a == 3)
        {
            foo(a+1);
        }
        return false;
    }

Почему мы можем ее вызвать прямо в определении?

One Answer

Вызов функции из самой себя называется рекурсией. Понятно, что для обеспечения работоспособности такого кода должно быть достижимо условие завершения рекурсии. Иначе (при заведомо ограниченном объеме памяти) программа грохнется с переполнением стека (Stack overflow).

Для С++ рекурсивный вызов разрешён для любых функций кроме main. Ссылка на черновик стандарта:

Recursive calls are permitted, except to the main function

Answered by αλεχολυτ on January 12, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP