Ответы пользователя по тегу Рекурсия
  • Как в этом примере достигается база рекурсии?

    @Aracon
    Этот метод делит строку пополам и переставляет местами половины. Во внутренние вызовы передаются уже половины строк. Деление пополам конечно - в какой-то момент фрагмент строки будет длины 1 или 0. Чтобы обратить строку единичной длины или пустую строку, ничего делать не нужно, поэтому, если длина строки <=1, возвращается та же самая строка, - так достигается база.

    Пример. В качестве символов для удобства возьмём цифры.
    1) Данные уходят в глубь рекурсивных вызовов:
    (12345)
    ((12) (345))
    (((1) (2)) ((3) (45)))
    Когда функция получает строку длины 1, то возвращает её же. А строка "45" уйдёт ещё на один шаг вглубь. Тем временем в вызовах, получивших обратно данные, результаты переставляются местами и возвращается получившаяся строка:
    ((21) ((3) ((4) (5))))
    ((21) ((3) (54)))
    ((21) (543))
    (54321)
    Ответ написан
    2 комментария