1 семестр / laboratornaia-rabota-10
.pdf
НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ЯДЕРНЫЙ УНИВЕРСИТЕТ «МИФИ» Кафедра информатики и процессов управления (№17)
Информатика (основной уровень), 1-й курс, 1-й семестр.
Задание для лабораторной работы 10.
Тема 10: Рекурсия.
Составить программу, которая, используя рекурсивную функцию, находит значение данной функции для любых целых неотрицательных аргументов:
max{n, m}, если |
||||
|
n m 1 |
|
||
F (n, m) |
||||
F |
|
|
, m |
|
2 |
|
|||
|
|
|
|
|
(n
F
m) четно;
n m 1
n, в остальных случаях.
2
Программа должна останавливать вычисления, если значения аргументов функции приводят к бесконечному рекурсивному вызову. (Для отслеживания этого случая можно использовать, например, внешнюю переменную – счетчик количества рекурсивных вызовов).
Автоматическая проверка решений
Для автоматической проверки решения необходимо, чтобы программа выполняла ввод и вывод следующим образом.
Ввод. Пользователь водит на стандартной консоли число n и нажимает клавишу «Enter». Затем водит число m и нажимает клавишу «Enter». Например
5
3
Вывод. Программа выполняет вывод на стандартную консоль по следующему шаблону:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- |
8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Значение F(n,m) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Обозначения непечатных символов: – новая строка ('\n')
В случае возникновения бесконечного рекурсивного вызова выводить символ «!». Например:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
! |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Происходит бесконечный рекурсивный вызов |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
После числа или знака «!» выводится переход на новую строку. Автоматическая проверка выполняется посимвольно.
