Информатика, вопрос задал daniel228798 , 2 года назад

Информатика 10 класс

Рекурсивные алгоритмы

Заранее спасибо

Определите, сколько символов * выведет эта процедура при вызове F(6):

procedure F( n: integer );
begin
write('*');
if n >= 1 then begin
write('*');
F(n-1);
F(n-2);
F(n-3);
end;
end;

Ответы на вопрос

Ответил artemzelenskiy00
2

Ответ:

 

Ответ: 49.

Объяснение:

Пер­вым дей­стви­ем про­це­ду­ра F(1) вы­ве­дет число 1. Далее про­це­ду­ра F(1) вы­зо­вет про­це­ду­ру F(n + 1), в ре­зуль­та­те вы­пол­не­ния ко­то­рой на экра­не по­явит­ся число n + 1 = 2. Про­це­ду­ра F(2) вы­зо­вет про­це­ду­ру F(3), ко­то­рая вы­ве­дет на экран число 3 и вы­зо­вет про­це­ду­ру F(4), ко­то­рая вы­ве­дет на экран число 4 и вы­зо­вет F(5), ко­то­рая вы­ве­дет на экран число 5.

После этого управ­ле­ние вернётся к про­це­ду­ре F(4), ко­то­рая начнёт вы­пол­нять сле­ду­ю­щий шаг сво­е­го ал­го­рит­ма, т. е. об­ра­тить­ся к про­це­ду­ре F(n + 3) = F(7). Про­це­ду­ра F(7) вы­ве­дет на экран число 7. Далее управ­ле­ние вернётся к про­це­ду­ре F(3). Рас­суж­дая ана­ло­гич­но при­хо­дим к вы­во­ду, что про­це­ду­ра F(3) до­пол­ни­тель­но вы­ве­дет на экран число 6, про­це­ду­ра F(2) — 5.

По­след­ним дей­стви­ем про­це­ду­ры F(1) будет вызов про­це­ду­ры F(n + 3) = F(4), ко­то­рая вы­ве­дет на экран числа 4, 5, 7.

Таким об­ра­зом, на экра­не будут числа 1, 2, 3, 4, 5, 7, 6, 5, 4, 5, 7. Их сумма равна 49.

 

Новые вопросы