Что выведет программа при вызове f 4

Записана рекурсивная функция:

procedure F(n:integer);
begin
write (n);
if n>2 then
begin
f(n-1);
f(n-2);
f(n-3)
end;
//что выведет программа при вызове f(4)?
end;
begin
f (4);
readln
end.

Никак не могу понять, откуда 021 в конце? Объясните пожалуйста.

10 января 2016

Потому что при вызове F(4) сначала будет вызвана процедура F(3), которая, с свою очередь, вызовет F(2), F(1), F(0), и на экране появится 43210
Затем F(4) вызовет процедуру F(2), которая никакую процедуру не вызовет, а только выведет на экран 2, на экране появится 432102
Затем F(4) вызовет F(1), которая так-же ничего не вызовет, но выведет на экран 1, и на экране появится 4321021

А можете подсказать,как правильно последовательность чисел записать в ответе? У меня уже было задание,только нужно было записать сумму,так было легче,а в данном случае у меня получилась последовательность 4321210

Источник: infbu.ru

11 Задание ЕГЭ Информатика Рекурсия

Что выведет программа при вызове f 4

Привет Лёва Середнячок

raindrops1

Что выведет программа при вызове f(4)? Ответ — 4321021, объясните, пожалуйста, откуда взялся 0?

Комментарии

Рекурсию руками за 5 баллов раскручивать? Мазохизм это.

3 (2 оценки)

averutin

averutin 7 лет назад

Светило науки — 147 ответов — 0 раз оказано помощи

при втором вызове процедуры, когда n=3 процедура получает на вход f(3), а так как 3>2, выполняется условие IF и в третьей строки получается что 3-3 — вот и ваш 0.

Источник: vashurok.com

Что выведет программа при вызове f(4)? Ответ — 4321021, объясните, пожалуйста, откуда взялся 0?

при втором вызове процедуры, когда n=3 процедура получает на вход f(3), а так как 3>2, выполняется условие IF и в третьей строки получается что 3-3 — вот и ваш 0.

Читайте также:
Dnfdragora как пользоваться программой

Автор ответа: raindrops1

Это я понимаю, но там тогда бы ноль стоял после 2 и 1, почему он именно на этом месте?

Автор ответа: averutin

потому что однин раз вызвав процедуру из главной программы, она сама себя вызывает ещё 5 раз, до тех пор, пока значение х не станет меньше 2

Автор ответа: averutin

Источник: sous-otvet.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru