Гл. Т Рекурсивный вызов
Дан текст процедуры на двух языках программирования:
| Паскаль | Python |
|---|---|
procedure f(n: integer);begin write('*'); if n > 1 then f(n div 2)end; |
def f(n): print('*') if n > 1: f(n//2) |
Сколько звёздочек будет выведено на экран в результате вызова f(5)?
а) 1
б) 2
в) 3
г) 5
Решение
При каждом вызове сначала выводится одна звёздочка. Затем, если аргумент больше
| Вызов | Вывод | Проверка и следующий вызов |
|---|---|---|
f( |
* |
, вызывается f( |
f( |
* |
, вызывается f( |
f( |
* |
Итого выполнено три вызова и каждый вывел одну звёздочку:
Ответ
в)
Помогло?
