Просмотр задания
Записана рекурсивная функция:

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
Ответы (4)
Информатик БУ # 10 января 2016 в 01:01 +1
Потому что при вызове F(4) сначала будет вызвана процедура F(3), которая, с свою очередь, вызовет F(2), F(1), F(0), и на экране появится 43210
Затем F(4) вызовет процедуру F(2), которая никакую процедуру не вызовет, а только выведет на экран 2, на экране появится 432102
Затем F(4) вызовет F(1), которая так-же ничего не вызовет, но выведет на экран 1, и на экране появится 4321021
Valery Minnulin # 10 января 2016 в 19:46 0
А можете подсказать,как правильно последовательность чисел записать в ответе? У меня уже было задание,только нужно было записать сумму,так было легче,а в данном случае у меня получилась последовательность 4321210
Информатик БУ # 10 января 2016 в 21:00 0
Для этого примера
Valery Minnulin # 10 января 2016 в 21:02 0
Теперь все понял. Большое спасибо)
Перевести число из в Результат: 510 = 1012