Четыре задачи, которые используют момент, когда вызов возвращается: печать задом наперёд, число в двоичной системе, палиндром, проверяемый с двух концов, и пирамида, нарисованная строка за строкой.
- Код после рекурсивного вызова выполняется на пути обратно, в обратном порядке.
- Передавайте массив или строку по
const-ссылке (const vector<int>& a) или храните в глобальной переменной — копировать их в каждый вызов слишком медленно. - В задаче про двоичную запись числа доходят до 2⁶⁴ − 1: нужен
unsigned long long. - Эти рекурсии уходят до 100 000 вызовов в глубину. Если большой тест падает в
Code::Blocks, а логика верна, добавьте
-Wl,--stack,268435456в параметры компоновщика, как в уроке.