Есть ответ 👍

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

138
443
Посмотреть ответы 3

Ответы на вопрос:


98

Код для собственной проверки:

def F(n):

if n > 0:

print('*')

F(n-2)

F(n-1)

F(n-1)

print('*')

if __name__ == "__main__":

F(5)

Mystery322
4,6(55 оценок)

Вся сложность рекурсивных алгоритмов заключается в том, что внутри одной функции запустится другая.

Запускается F(5)

n>0? 5>0? - Да.

Выводится звёздочка, Запускается F(3), потом F(4), потом F(4) и снова выводится звёздочка (если все эти команды под условие попадают, а то у вас табуляция не расставлена)

На данный момент мы имеем 2 звёздочки и ещё 3 функции, которые должны быть выполнены.

Начнём с F(3)

3>0? Да. Тогда:

Выводится звёздочка, Запускается F(1), потом F(2), потом F(2) и снова выводится звёздочка

Уже 4 звёздочки

Нам осталось 2 раза выполнить F(2) (результаты у них будут одинаковые)

2 раза F(4) и F(1)

Запустим F(1):

1>0? Да.

Выводится звёздочка, Запускается F(-1), потом F(0), потом F(0) и снова выводится звёздочка

Звёздочек 6.

F(-1): -1>0? Нет. Ничего не делаем

F(0): 0>0? Нет. Ничего не делаем

F(2):

2>0

Выводится звёздочка, Запускается F(0), потом F(1), потом F(1) и снова выводится звёздочка

Уже 8 звёздочек

И 2 раза выводим F(1), а каждое F(1) даёт нам по 2 звёздочки

Итог: 12 звёздочек.

F(2) надо выполнить 2 раза, то бишь ещё 6 звёздочек, итог 18

Осталось 2 раза выполнить F(4)

4>0

Выводится звёздочка, Запускается F(2), потом F(3), потом F(3) и снова выводится звёздочка

20 звёздочек + 6 от F(2) + 16 от F(3) + 16 от F(3) = 58 звёздочек

F(4) выполняем второй раз 58+40=98 звёздочек - ответ

В дополнение прикреплю визуальное решение, оно должно быть попроще:


Дан рекурсивный алгоритм: def F(n):if n > 0:print('*')F(n-2)F(n-1)F(n-1)print('*')Сколько символо
Дан рекурсивный алгоритм: def F(n):if n > 0:print('*')F(n-2)F(n-1)F(n-1)print('*')Сколько символо
ник4430
4,6(73 оценок)

var r: real;

begin

write ('введите радиус круга: ');

read(r);

writeln ('площадь круга равна: ', pi*sqr(r): 0: 3);

writeln ('длина окружности равна: ', 2*pi*r: 0: 3);

end.

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS