Информатикав фото слева вывод программы,а справа сама программа я вообще ничего не шарю в...

0 голосов
33 просмотров

Информатика
в фото слева вывод программы,а справа сама программа
я вообще ничего не шарю в программировании разжуйте по кусочкам пожалуйста
1. я не понимаю почему в начале идут 6 звезд а не 5
2.я не понимаю почему идут 2 звезды потом 1 , а потом 2
3.ответ у меня получается 11 а в выводе 17


image

Информатика (139 баллов) | 33 просмотров
Дан 1 ответ
0 голосов

Будем выполнять действия за программой:

F(20) - пишется звёздочка

image10 " alt=" n=20>10 " align="absmiddle" class="latex-formula">

F(18) - пишется звёздочка

image10 " alt=" n=18>10 " align="absmiddle" class="latex-formula">

Мысленно печатаем в голове:

*(20) *(18) *(16) *(14) * (12) *(10) (звёздочка и в скобках после - n)

Почему напечатается при n=10? Потому что условие после того, как печатается звёздочка.

Итак, у нас есть 6 звёздочек. Продолжаем с пункта выполнения F(10), но звёздочка уже напечаталась 6-ая!)

image10 " alt=" n=10>10 " align="absmiddle" class="latex-formula"> - ложь, выполняется G(10)

G(10)

Печатается ** (уже 6 + ещё 2)

image1 " alt=" n=10>1 " align="absmiddle" class="latex-formula"> - правда, значит выполняется F(7)

F(7) - опять будет выполняться G(n), так как n=7<10 и в дальнейшем только уменьшается. НО! При каждом выполнении F печатается ещё одна звёздочка, независимо от условий.

Итого при каждом выполнении G будет выводится 3 звёздочки (2 от G и 1 от F)

***(10) ***(7) ***(4) ***(1)

И на последнем выполнении напечатается 2 звёздочки, а условие не выполнится. После этого выполнение закончится.

Итого 6 + 9 + 2= 17

Надеюсь понятно объяснил, рекурсия не самая простая тема

(4.3k баллов)