Задание № 2234 по информатике: Алгоритмы и программы (Функция, Рекурсия, работа со строками, работа с файлами, сортировка, граф)

Алгоритмы и программы (Функция, Рекурсия, работа со строками, работа с файлами, сортировка, граф)Один ответ · среднее

Дана рекурсивная функция на языке Python:

def f(s):
if len(s) <= 2:
return s
return f(s[1:-1]) + s[-1] + s[0]

Сколько всего раз вызывается функция f (считая первый вызов) при выполнении f("ABCDEFG") и какое значение возвращает этот вызов?

  1. A4 вызова; DECFBGA
  2. B3 вызова; DECFBGA
  3. C4 вызова; DCEBFAG
  4. D4 вызова; GAFBECD
Показать ответ и разборСкрыть ответ и разбор

Верный ответ

  • A4 вызова; DECFBGA

Разбор

Срез s[1:-1] отбрасывает первый и последний символы. Цепочка вызовов: f("ABCDEFG") -> f("BCDEF") -> f("CDE") -> f("D"). На строке "D" длина 1 (не больше 2), поэтому рекурсия заканчивается: всего 4 вызова. Возврат: f("D") = "D"; f("CDE") = "D" + "E" + "C" = "DEC"; f("BCDEF") = "DEC" + "F" + "B" = "DECFB"; f("ABCDEFG") = "DECFB" + "G" + "A" = "DECFBGA". Итого «4 вызова; DECFBGA». Вариант «DCEBFAG» получается при неверном порядке s[0] + s[-1], «GAFBECD» — при добавлении символов перед результатом рекурсии, а «3 вызова» не учитывает вызов на базовом случае.

Ошибка в задании

Опишите ошибку в условии, вариантах или разборе. Не больше 1000 знаков.

Похожие задания по этой теме

Все 9 заданий темы

Репетиторы по информатике

Тренажёр

Потренируйте эту тему

9 заданий по одному, с ответом и разбором сразу. Без лимита времени.

Свой пробник

Соберите пробник с таймером

Как на ЕНТ: 2 минуты на задание.

Сколько заданий