• ОЧЕНЬ СРОЧНО, ПОМОГИТЕ, ПОЖАЛУЙСТА!

    Ниже записан рекурсивный алгоритм F. Чему равна сумма напечатанных на экране чисел при выполнении вызова F(10)?

    procedure F (n:integer);
    begin
    if n > 2 then begin
    writeln (n);
    F (n-3);
    F (n-4)
    end
    end;

Ответы 1

  • Для удобства прономерую строки:1) procedure F (n:integer);2) begin3) if n > 2 then begin 4) writeln (n);5) F (n-3);6) F (n-4)7) end8) end;-первый вызов- со входным параметром n=10-в строке 3 проверяется, что n больше двух,-так как n действительно больше двух, то выполняются три следующие строки № 4,5,6 (а строка 7 -это указатель конца блока, выполняемого при истинности проверки)-строка 4 печатает значение n, то есть 10-строка 5 вызывает этот алгоритм вновь, со входным параметром 7-строка 6 опять вызывает алгоритм, со входным параметром 6И в каждом вызове будут ещё два вызова, со входными параметрами на три и четыре меньше, чем былИ так далее, каждый вызов будет вновь вызывать алгоритм, и печатать n до тех пор, пока n будет больше двух.итак, получим ветвление вызовов, и вот значение n в каждом из них:    10     7                   6  4     3            3     21 0  0 -1        0 -1но, не все из этих n будут напечатаны, а только те, которые больше двух. если по порядку, то вот что будет напечатано:1074363сумма всех этих чисел равна 33Ответ: 33.
    • Автор:

      catalina
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years