Дан рекурсивный алгоритм: def F(n):
if n > 0:
print('*')
F(n-2)
F(n-1)
F(n-1)
print('*')
Сколько символов "звездочка" будет напечатано на экране при выполнении
вызова F(5)?
Ответы на вопрос:
98
Код для собственной проверки:
def F(n):
if n > 0:
print('*')
F(n-2)
F(n-1)
F(n-1)
print('*')
if __name__ == "__main__":
F(5)
Вся сложность рекурсивных алгоритмов заключается в том, что внутри одной функции запустится другая.
Запускается 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 звёздочек - ответ
В дополнение прикреплю визуальное решение, оно должно быть попроще:
var r: real;
begin
write ('введите радиус круга: ');
read(r);
writeln ('площадь круга равна: ', pi*sqr(r): 0: 3);
writeln ('длина окружности равна: ', 2*pi*r: 0: 3);
end.
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
LeraLis20128.11.2021 13:19
-
Eva576811.06.2023 05:24
-
школота9017.12.2022 14:30
-
maxtigr2424.06.2020 12:58
-
дэфолт12319.08.2022 14:56
-
ivankasranka222.02.2020 04:45
-
Azaliya111111112.02.2022 00:00
-
fistahka33618.01.2021 17:38
-
5polinka28.01.2020 04:01
-
askipolina09.06.2023 17:24
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.