!
Э́дсгер Ви́бе Де́йкстра (11.05.1930–6.08.2002) – нидерландский учёный, труды которого оказали влияние на развитие информатики и информационных технологий; один из разработчиков концепции структурного про-граммирования, исследователь формальной верификации и распределенных вычислений. Автор нескольких книг и множества статей, самые известные публикации – книги «Дисциплина программирования», «Заметки по структурному программированию», статья «О вреде оператора GOTO».
Для вычисления длины отрезка по координатам его концов используем формулу из геометрии.
Действия по вычислению длины отрезка представляют собой логически целостный фрагмент, который можно оформить в виде вспомогательного алгоритма.
Вызывая вспомогательный алгоритм с разными исходными данными, вычислим длины всех сторон.
А затем Найдем периметр.
Блок-схема
Отрезок
(XB, YB, XC, YC, D)
P := P + D
Отрезок
(XА, YA, XC, YC, D)
P
X1, Y1, X2, Y2
REZ
D := SQRT (SQR(X1-X2)+SQR(Y1-Y2))
Каким будет результат работы алгоритма при следующих исходных данных:
XA = 1, YA = 1,
XB = 1, YB = 5,
XC = 4, YC = 1?
?
!
Приведите примеры рекурсии, встречающиеся в жизни, природе или литературных произведениях.
?
Ночь, улица, фонарь, аптека,
Бессмысленный и тусклый свет.
Живи еще хоть четверть века –
Все будет так. Исхода нет.
Умрешь – начнешь опять сначала
И повторится все, как встарь:
Ночь, ледяная рябь канала,
Аптека, улица, фонарь.
А. Блок
Ответ:
F (n) = 1 при n ≤ 2;
F (n) = F (n-1) + F (n-2) при n > 2.
Пример 3. Запишите рекуррентное определение функции, вычисляющей количество цифр в натуральном числе n.
Ответ:
К (n) = 1 при n < 10;
К (n) = К (n div 10) + 1 при n ≥ 10.
Решение:
F (1) = 2
F (2) = 2 ∙ F (1) = 2 ∙ 2 = 4
F (3) = 3 ∙ F (2) = 3 ∙ 4 = 12
F (4) = 4 ∙ F (3) = 4 ∙ 12 = 48
F (5) = 5 ∙ F (4) = 5 ∙ 48 = 240
F (6) = 6 ∙ F (5) = 6 ∙ 240 = 1440
Подобные вычисления можно проводить в уме, а их результаты фиксировать в таблице:
Ответ: 1440
В заголовке процедуры после её имени приводится перечень формальных параметров и их типов.
Для вызова процедуры достаточно указать её имя со списком фактических параметров.
Между фактическими и формальными параметрами должно быть полное соответствие по количеству, порядку следования и типу.
В заголовке функции после её имени приводится описание входных данных – перечень формальных параметров и их типов. Там же указывается тип самой функции, т. е. тип результата. В блоке функции должен присутствовать оператор:
<имя_функции> := <результат>;
Для вызова функции достаточно указать её имя со списком
фактических параметров.
определяют исходные данные, которые нежелательно изменять в ходе выполнения подпрограммы
играют роль входных параметров
описываются в заголовке:
Имя_переменной: тип
соответствующие им фактические параметры могут быть константами, переменными, выражениями
Типы формальных параметров
Ответ (с помощью процедуры):
procedure otrezok (x1,y1, x2,y2: real; var d: real);
begin
d := sqrt (sqr (x1-x2) + sqr (y1-y2))
end;
Подсказка. Составьте рекурсивную процедуру.
var n: integer;
procedure back (n: integer);
var x: integer;
begin
if n > 0 then begin
read (x);
back (n-1);
write (x,' ')
end
end;
BEGIN
write ('Введите n = '); readln (n);
back (n)
END.
Программа
Подсказка
Примечание. Решите задачу с помощью рекурсивной процедуры.
var x, y: integer;
procedure reverse (x: integer; var y: integer);
begin
if x>0 then begin
y := y*10 + x mod 10;
reverse (x div 10, y)
end
end;
BEGIN
write ('Введите число = ');
readln (x);
reverse (x, y);
writeln ('Ответ: ', y)
END.
Программа
Решение:
Количество программ, с помощью которых можно попасть в некоторое число n будем рассматривать как функцию K (n).
К(n) = 0 при n < 4;
К(n) = 1 при n = 4;
К(n) = К(n – 1) + К(n / 2) при n > 4.
Ответ: 5
Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:
Email: Нажмите что бы посмотреть