Помогите, пожалуйста, с информатикой.
Объясните кратко, если не сложно)
Дан текст процедуры на языке Паскаль:
procedure f (n: integer); begin write ('+'); if n > 1 then f (n div 2) end;
Сколько "+" будет выведено на экран в результате вызова f(3) ?
Информатика 11 класс Рекурсия и процедуры в Паскале информатика 11 класс язык Паскаль рекурсивные процедуры количество выводов алгоритмы программирование задача на Паскале Новый
Привет! Давай разберем эту процедуру шаг за шагом.
Когда мы вызываем f(3), сначала выполняется строка write('+')
, и на экран выводится один знак "+".
Далее проверяется условие if n > 1
. Поскольку 3 больше 1, мы заходим в условие и вызываем f(3 div 2), что равно f(1).
Теперь, при вызове f(1), снова выполняется write('+')
, и на экран выводится еще один знак "+".
После этого проверяется условие if n > 1
, но так как 1 не больше 1, мы не заходим в условие и процедура заканчивается.
Итак, в итоге мы получили два знака "+".
Так что правильный ответ: а. 2.