Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Приклад. Визначити факторіал у рекурсивній формі




Визначити факторіал у рекурсивній формі.

Program FACT(input, output);

var n:integer;

Function F(v:integer):integer;

begin

if v=0 then F:=1

else F:=v*F(v-1);

end;

begin

writeln('Введіть аргумент n');

read(n);

if n<0 then writeln('факторіал не визначений');

else writeln('факторіал',n,'= ',F(n));

end.

У прикладі рекурсивна функція F обчислює факторіал для n>0 за формулою n!=n(n–1)!. Однак, дану функцію можна зобразити і не рекурсивною.

Приклад 1. Розробити алгоритм та програму обчислення площі опуклого чотирикутника із заданими довжинами чотирьох сторін і діагоналі з використанням формули Герона (рис. 27).

 

 

 


Рис. 27

, .

Варіант 1. З використанням процедури.

Варіант 2. З використанням функції.

Варіант 1. Program Ploscha-1; var AB, BC, CD, DA, AC, S1, S, a, b, c, p: real; procedure Str1; begin P: = (a + b + c)/2; S: =sqrt (p*(p-a)* (p-b)* (p-c)); end; begin read (AB, BC, CD, DA, AC); a: = AB; b: = BC; c: = AC; Str1; S1: = S; a: = DA; b: = AC; c: = CD; Str1; S1: = S1 + S; writeln (S1); end. Варіант 2. Program Ploscha-2; var AB, BC, CD, DA, AC: real; function Str2 (a, b, c:real): real; var p: real; begin p: = (a + b + c)/2; Str2: = sqrt (p* (p-a) * (p-b)* (p-c)); end; begin read (AB, BC, CD, DA, AC); writeln (Str 2 (AB, BC, AC) + Str2 (CD, DA, AC)); end.

Приклад 2. Скласти програму прогнозування ремонту радіотехнічних пристроїв: імовірність того, що за період часу необхідно ремонтувати не менше пристроїв; N – пристрої в експлуатації; P – імовірність відмови; - число комбінацій з N по К. Факторіал обчислити за допомогою процедури. Початкові дані: P=0.5; m = 4; N = 10.

Program Remont (input, output);

var I, K, M, N: integer; A, B, C, C1, C2, C3, P, R: real;

Procedure FAKT (X: integer; Y: integer);

var I: integer;

begin

Y: = 1;

for I: = 1 to X do Y: = Y*I

end;

begin

read (M, N, P);

R: = 0;

for K:= M to N do

begin

A: = 1;

for I: = 1 to K do

A: = A*P;

B: = 1;

for I: = 1 to N-K do

B: = B* (1-P);

FAKT (N, C1);

FAKT (K, C2);

FAKT (N – K, C3);

C: = C1/ (C2*C3);

R: = R + C*A*B;

end;

writeln (’ R = ’, R);

end.

Завдання:

Скласти блок-схему алгоритму і програму обчислення значення функції таблиці 10, використовуючи як допоміжний алгоритм:

а) підпрограму – функцію;

б) підпрограму – процедуру.

На екран вивести значення аргументу і функції у вигляді таблиці.

Х У
   

 

Умови задачі наведені в табл. 36.

Таблиця 36

Умови задачі Примітка
1.
2. , якщо
3. , якщо
4. , якщо
5. , якщо



Поделиться с друзьями:


Дата добавления: 2015-05-24; Просмотров: 414; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.013 сек.