Дан рекурсивный алгоритм:
def F( n ):
print( '*' )
if n > 0:
F( n-2 )
F( n // 2 )
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?

Pleshkova01 Pleshkova01    1   15.04.2020 12:29    284

Ответы
Tobirama0shok Tobirama0shok  15.04.2020 12:30

gfegev

Объяснение:

ПОКАЗАТЬ ОТВЕТЫ
ЛюАниме ЛюАниме  15.04.2020 12:30

Объяснение:

подумай овррклуокоокококоокок

ПОКАЗАТЬ ОТВЕТЫ
Pingvinchikc Pingvinchikc  09.01.2024 12:40
Чтобы решить эту задачу, давайте разберемся в работе данного рекурсивного алгоритма по шагам.

Для начала, вызываем функцию F(7).

Шаг 1:
Печатаем символ "*".
Теперь n = 7.
Вызываем функцию F(7-2), то есть F(5).

Шаг 2:
Печатаем символ "*".
Теперь n = 5.
Вызываем функцию F(5-2), то есть F(3).

Шаг 3:
Печатаем символ "*".
Теперь n = 3.
Вызываем функцию F(3-2), то есть F(1).

Шаг 4:
Печатаем символ "*".
Теперь n = 1.
Вызываем функцию F(1-2), то есть F(-1).

Шаг 5:
n = -1 <= 0, поэтому выходим из функции.

При этом, символ "*" был напечатан 4 раза.

Теперь возвращаемся к последнему невыполненному вызову функции F(1).

Шаг 5 (повтор):
n = 1 // 2, поэтому вызываем функцию F(0).

Шаг 6:
Печатаем символ "*".
Теперь n = 0.
Выходим из функции F(0).

Теперь возвращаемся к предыдущему невыполненному вызову функции F(1).

Шаг 6 (повтор):
n = 1 // 2, поэтому вызываем функцию F(0).

Шаг 7:
Печатаем символ "*".
Теперь n = 0.
Выходим из функции F(0).

Теперь возвращаемся к предыдущему невыполненному вызову функции F(3).

Шаг 4 (повтор):
n = 3 // 2, поэтому вызываем функцию F(1).

Шаг 5:
Печатаем символ "*".
Теперь n = 1.
Вызываем функцию F(1-2), то есть F(-1).

Шаг 5 (повтор):
n = -1 <= 0, поэтому выходим из функции.

Теперь возвращаемся к предыдущему невыполненному вызову функции F(3).

Шаг 5 (повтор):
n = 3 // 2, поэтому вызываем функцию F(1).

Шаг 6:
Печатаем символ "*".
Теперь n = 1.
Вызываем функцию F(1-2), то есть F(-1).

Шаг 7:
n = -1 <= 0, поэтому выходим из функции.

Теперь возвращаемся к предыдущему невыполненному вызову функции F(5).

Шаг 6 (повтор):
n = 5 - 2, поэтому вызываем функцию F(3).

...

Продолжаем подобным образом до завершения алгоритма.

Таким образом, нам нужно посчитать, сколько раз был напечатан символ "*".
Обращаясь к нашим шагам, мы видим, что символ "*" был напечатан 4 раза.

Итак, при выполнении вызова F(7) будет напечатано 4 символа "звездочка".
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика