Как включить рекурсивную функцию, чтобы избежать переполнения стека? - PullRequest
0 голосов
/ 17 апреля 2019

Если у меня есть рекурсивная функция в Java, я могу бесконечно вызывать ее с помощью следующего кода:

void recfunction()
{
    recfunction();
    System.gc();
}

Как я могу сделать это в C ++?

1 Ответ

2 голосов
/ 17 апреля 2019

Не существует стандартного способа заставить компилятор c ++ выполнить оптимизацию хвостового вызова для рекурсивной функции.

Сказав это, gcc8 с -O2 фактически выполнит оптимизацию хвостового вызова, когда это возможно.

https://godbolt.org/z/tSDODA

...