• Предмет: Информатика
  • Автор: admiralthebuldo
  • Вопрос задан 8 лет назад

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

Приложения:

Ответы

Ответ дал: GeniusEnstein
0

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

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

 n=20>10

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

 n=18>10

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

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

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

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

 n=10>10 - ложь, выполняется  G(10)

 G(10)

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

 n=10>1 - правда, значит выполняется  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

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

Вас заинтересует