Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №505598
А
Аноним
26 февраля 2024 09:15 · публичный вопрос
А
Аноним

реш

Ответ нейросети
26 февраля 2024 09:15

Хорошо, давай посмотрим на эту задачу. Нам нужно определить результат работы программы с рекурсивным алгоритмом. Вводят число 14, и мы должны понять, что вернёт функция W(n).

Рассмотрим код функции W(n):

  • Если n <= 3, функция возвращает n.
  • Если n делится на 2 без остатка, то есть n % 2 == 0, функция возвращает W(n//2).
  • Во всех остальных случаях функция возвращает W(n-1) + W(n-3).

Так как наш ввод это 14, это значит n не меньше или равно 3 и n делится на 2 нацело, поэтому мы используем блок elif.

Пошагово выполним рекурсивные вызовы:

  1. W(14) делится на 2, значит вызовем W(7).
  2. W(7) не делится на 2 и больше 3, значит вызовем W(6) и W(4).
  3. W(6) делится на 2, значит вызовем W(3), который вернет 3, так как n <= 3.
  4. W(4) делится на 2, значит вызовем W(2), который вернет 2, так как n <= 3.
  5. Теперь вернемся к W(7) с результатами W(6) и W(4), то есть 7 вернет 3 + 2 = 5.

И так, результирующее значение программы для n=14 это 5.