profile
Размещено 5 лет назад по предмету Информатика от evgenyikrav

Ниже на языке прогаммирования паскаль записаны две рекурсивные функции (процедуры): F и G. Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(20)?
Procedure F(n: integer) ; forward;
Procedure G(n: integer) ; forward;

procedure F(n: integer) ;
Begin
Write ('*');
If n > 10 then F(n-2) else G(n);
End;

Procedure G(n: integer) ;
Begin
Write ('**');
If n > 1 then F(n-3);
End;
Обьясните пожалуйста, как это делать, если можете, то распишите пожалуйста подробно.

  1. Ответ на вопрос
    Ответ на вопрос дан Аккаунт удален
    Все нормальные люди делают это так:

    procedure F(n:integer); forward;
    procedure G(n:integer); forward;

    procedure F(n:integer);
    begin
      Writeln('Вызов F(',n,') - *');
      //Write('*');
      If n>10 then F(n-2) else G(n);
      Writeln('Завершение F(',n,')')
    end;

    procedure G(n: integer) ;
    begin
      Writeln('Вызов G(',n,') - **');
      //Write('**');
      If n>1 then F(n-3);
      Writeln('Завершение G(',n,')')
    end;

    begin
      F(20)
    end.

    Результат
    Вызов F(20) - *
    Вызов F(18) - *
    Вызов F(16) - *
    Вызов F(14) - *
    Вызов F(12) - *
    Вызов F(10) - *
    Вызов G(10) - **
    Вызов F(7) - *
    Вызов G(7) - **
    Вызов F(4) - *
    Вызов G(4) - **
    Вызов F(1) - *
    Вызов G(1) - **
    Завершение G(1)
    Завершение F(1)
    Завершение G(4)
    Завершение F(4)
    Завершение G(7)
    Завершение F(7)
    Завершение G(10)
    Завершение F(10)
    Завершение F(12)
    Завершение F(14)
    Завершение F(16)
    Завершение F(18)
    Завершение F(20)

    Считаем звездочки, их 17. Осталось оформить ответ, сделав вид, что это не программная выдача, а "я такой умный, на бумажке расписал".

    А "ненормальные люди" и в самом деле делают это вручную, не понимая, что ручной разбор рекурсии такой длины - это глупость.


    1. Ответ на вопрос
      Ответ на вопрос дан evgenyikrav
      У нас учительница сама не понимает, как это сделать, а я и подавно не могу понять
    2. Ответ на вопрос
      Ответ на вопрос дан evgenyikrav
      А почему программа считает F(7) если надо чтобы n было больше 10? Можете объяснить?
    3. Ответ на вопрос
      Ответ на вопрос дан evgenyikrav
      Спасибо большое!!!!
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 5 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.