Информатика, вопрос задал Zеwz , 1 год назад


Рассмотрите следующее описание функции:
function f(x: integer): integer;
begin
if x<=10 then f:=0 else f:=f(f(f(x-10)))
end;

Каким будет значение f(20)?

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

Ответил 000LeShKa000
2

Ответ:

0

Объяснение:

Проанализируем функцию. Здесь наблюдается так называемая рекурсия, когда подпрограмма в своем теле вызывает саму себя.

Первый вызов: f(20). Так как выражение 20 <= 10 будет ложным, то выполнится f:=f(f(f(20-10))) = f(f(f(10)))

Первый вызов функции "приостанавливается", и начинается вычисление  второй функции f(10). 10 <= 10 - удовлетворяет условию, значит результатом будет 0.

Теперь программе необходимо вычислить значение функции f(f(0)), который, в свою очередь, равен f(0) = 0. А это значит, что f(20) = 0.

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