Найти тему
Репетитор IT mentor

Как обратить последовательность чисел, не используя массивов и динамических структур

Недавно попалась интересная задача. Не думаю, что её можно применить в реальном проекте, но зато можно неплохо вспомнить работу рекурсии. Задача больше подойдет начинающим программистам для тренировки альтернативного алгоритмического мышления.

Задача

Дана последовательность целых чисел, заканчивающаяся числом 0. Выведите эту последовательность в обратном порядке. При решении этой задачи нельзя пользоваться массивами и прочими динамическими структурами данных. Можно ли не использовать циклы?

Подумаем... подумаем... возьмем черновик и еще раз подумаем...
Подумаем... подумаем... возьмем черновик и еще раз подумаем...

Что ж, давайте я тоже поделюсь своими соображениями...

Ниже условия представлены 4 возможных реализации решения, которые первыми приходят на ум. (С, C++, Python, Python через лямбда-функции).

-3
-4
-5
-6

Есть ли еще способы и аналогичные задачи? Давайте рассмотрим следующую задачку

-7

Дано натуральное число N. Поменять порядок цифр числа N на обратный

Решение:

1 способ:
Зеркальное отображение числа так как будто это число.
Плюсы: работа с числами всегда быстрее
Минусы: в случае окончания числа на 0 получается не совсем верное отображение ( Пример: 560 —> 65 )

2 способ:
Работа с числом как со строкой. Создается новая строка и с помощью конкатенации к ней присоединяются все символы исходной строки, начиная с конца. Отображает зеркально все символы.
( Пример: 560 —> 065 ). Остается вопрос: можно ли считать 065 тоже натуральным числом? Нет. Поэтому условие задачи не вполне корректное.

3 способ:
Использование срезов для строк. Результат аналогичен второму.

-8

А как Вы решили бы данную задачку на вашем любимом языке программирования? Напишите в комментариях :)

Еще много полезного и интересного вы сможете найти на ресурсах:

Репетитор IT mentor в VK

Репетитор IT mentor в Instagram

Physics.Math.Code в контакте (VK)

Physics.Math.Code в telegram

Physics.Math.Code в YouTube