Предоставлен рекурсивный алгоритм: procedure F(n: integer); begin writeln(n); if n < 5 then begin F(n + 3); F(n * 3) end end; Определите и напишите сумму чисел, которые будут выведены при вызове F(1).
Дискретность - это свойство алгоритма, когда алгоритм разбивается на конечное число элементарных действий (шагов) . Понятность - свойство алгоритма, при котором каждое из этих элементарных действий (шагов) являются законченными и понятными. Детерминированность - свойство, когда каждое действие (операция. указание. шаг. требование) должно пониматься в строго определённом смысле, чтобы не оставалась места произвольному толкованию. чтобы каждый, прочитавший указание, понимал его однозначно. Массовость - свойство, когда по данному алгоритму должна решаться не одна, а целый класс подобных задач. Результативность – свойство, при котором любой алгоритм в процессе выполнения должен приводить к определённому результату. Отрицательный результат также является результатом.
1) 56(10) ⇒ х(2) Для перевода целого числа из десятичной системы в двоичную выполняем его целочисленное деление на два с сохранением остатка. Если частное больше единицы, делим его на два, снова сохраняем остаток и т.д. Как только частное станет равным 1 или 0, записываем его, а затем приписываем к нему слева остатки в порядке, обратном их получению. 56 / 2 = 28 (остаток 0) 28 / 2 - 14 (остаток 0) 14 / 2 = 7 (остаток 0) 7 / 2 = 3 (остаток 1) 3 / 2 = 1 (остаток 1) Записываем результат. 56(10) = 111000(2)
Переводы в десятичную систему счисления выполняются путем записи числа в расширенном виде по основанию системы счисления, в которой представлено число. А далее операции выполняются в десятичной системе.
Переводы чисел между системами счисления по основаниям, кратным степеням двойки (2,4,8,16) выполняется через двоичную систему счисления, как через промежуточную. Например, при переходе от восьмеричной системы к шестнадцатиричной, мы учитываем, что , каждую восьмеричную цифру заменяем тремя двоичными (триадой) и получаем двоичное число. А затем, зная что , мы группируем двоичные разряды справа налево по четыре, получая тетрады. И, наконец, каждую тетраду мы заменяем соответствующей шестнадцатиричной цифрой. Описывать этот процесс долго, а перевод делается быстро. 3) 77(8) = 111 111(2) = 11 1111(2) = 3F(16) 4) 57(8) = 101 111(2) = 101111(2) 5) 9A(16) = 1001 1010(2) = 10011010(2) 7) 10011(2) = 010 011(2) = 23(8) 8) 101011(2) = 0010 1011(2) = 2B(16)
42
Объяснение:
F(1): вывод 1. Т.к. 1<5, произойдут рекурсивные вызовы
F(1+3)=F(4): вывод 4. Т.к. 4<5, произойдут рекурсивные вызовы
F(4+3)=F(7): вывод 7. Т.к. 7>5, рекурсивные вызовы не произойдут.
F(4*3)=F(12): вывод 12. Т.к. 12>5, рекурсивные вызовы не произойдут.
F(1*3)=F(3): вывод 3. Т.к. 3<5, произойдут рекурсивные вызовы
F(3+3)=F(6): вывод 6. Т.к. 6>5, рекурсивные вызовы не произойдут.
F(3*3)=F(9): вывод 9. Т.к. 9>5, рекурсивные вызовы не произойдут.
Сумма выведенных чисел будет равна 1+4+7+12+3+6+9=42