Есть ответ 👍

Дан рекурсивный алгоритм: procedure f(n: integer); begin writeln('*'); if n > 0 then begin f(n-2); f(n div 2) end end; сколько символов "звездочка" будет напечатано на экране при выполнении вызова f(7)?

166
433
Посмотреть ответы 2

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

Lunatuk
4,6(77 оценок)

Пусть k(n) - количество звездочек, напечатанных при вызове f(n) тогда k(n) = 1 { writeln('*') } + k(n-2) {вызов f(n-2) -> печатается еще k(n-2) звездочек} + k(n div 2) {f(n div 2)} при n > 0 и k(n) = 1 при n < = 0 требуется найти k(7) k(7) = 1 + k(5) + k(3) k(5) = 1 + k(3) + k(2) k(3) = 1 + k(1) + k(1) k(2) = 1 + k(0) + k(1) k(1) = 1 + k(-1) + k(0) k(0) = k(-1) = 1 {0, -1 < = 0} k(1) = 1 + 1 + 1 = 3 k(2) = 1 + 1 + 3 = 5 k(3) = 1 + 3 + 3 = 7 k(5) = 1 + 7 + 5 = 13 k(7) = 1 + 13 + 7 = 21 ответ: 21
aarodin
4,6(44 оценок)

7

Объяснение:

надеюсь что это правильно

Популярно: Информатика