Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
урок 82-83 рекурсивны алгоритми.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
996 Кб
Скачать
☆

6. Підсумки уроку.

  1. Задано рекурсивний алгоритм для деякої функції:

Function X1 (A, В : Integer): Integer:

Begin

If A>B Then X1:=0

Else X1:=A+X1(A+1,B);

End;

а) Яку функцію (обчислення) реалізує даний алгоритм?

б) Запишіть відповідну до даного алгоритму рекурсивну функцію.

в) Чи можна команду присвоєння, яка стоїть після службового сло­ва Else, записати так:

Х1:=В+Х1(А,В-1),

залишивши все інше без змін? Чи зміниться при цьому функція ал­горитму?

г)  Прослідкуйте за виконанням алгоритму Х1 при звертанні S:=X1 (-11,-5).

д) Прослідкуйте за виконанням алгоритму Х1 при звертанні S:=X1(14,10).

  1. Задано рекурсивний алгоритм для деякої функції:

Type A=Array[ 1..5] of Real;

Const В : А = (15,30,45,15,30);

Var Т: А;

і, Min, Max, N: Integer;

S:Real;

Function Х2 (К:А;І: Integer): Real;

Begin

If 1=5 Then X2:=T[l]/5

Else X2:=T[l]/5+X2(T,l+1);

End;

Begin

T:=B;

S:=X2 (T, 1);

WriteLn (’S=',S:6:2);

End.

а) Яку функцію (обчислення) реалізує даний алгоритм?

б) Запишіть відповідну до даного алгоритму рекурсивну функцію.

в) Прослідкуйте за виконанням алгоритму X. Яке значення надру­кує програма?

  1. Нехай S(a,b) - функція, яка обчислює суму парних чисел від А до В (А, В - парні числа, А<В), яку рекурсивно можна визначити так:

а) Складіть програму обчислення такої функції з використанням рекурсивної підпрограми.

б) Які зміни треба внести до цієї програми, щоб знайти суму чисел З, 9, 12, 15, 18, 21?

в) Які числа надрукує наведена програма при а=2, b=6, d=2?

г)  Яким вимогам мають відповідати аргументи функції Sum?

Var s, а, в, d: Integer;

Function Sum (A,B,D: lnteger):lnteger;

Begin

If A=B Then Sum:=A

Else Begin WriteLn (B);

   Sum:=B+Sum (A,B-D,D);

    End

End;

Begin

ReadLn (A,B, D);

S:=Sum (A,B, D);

WriteLn (S)

End.

  1. Що надрукує програма:

Var s, a, n, d: Integer;

Function Sum (A, N, D: Integer): Integer;

Begin

If N=1 Then Sum:=A

Else Sum:=Sum (A+D,N-1,D);

WriteLn (N:3, A:3);

End;

Begin

S:=Sum (2,3,4);

WriteLn (S);

End.

  1. Дайте рекурсивне визначення множення як додавання.

  2. Складіть програму для обчислення добутку двох чисел з викорис­танням рекурсивного алгоритму.

  3. Складіть програму для обчислення неповної частки від ділення двох чисел з використанням рекурсивного алгоритму; остачі від ділення (функції Mod, Div не застосовуйте).

  4. Запишіть рекурсивну функцію та рекурсивний алгоритм обчислен­ня степеня Xе для довільного дійсного X та цілого С (додатного, нульового, від'ємного) шляхом множення X на себе потрібну кіль­кість разів.

  5. Дана геометрична прогресія: b1=1.5, q=2. Запишіть рекурсивне ви­значення даної прогресії. Складіть програму обчислення n-го члена прогресії з використанням рекурсивної функції.

  6. Складіть програму обчислення n-го члена арифметичної прогресії (а1=3, d=2) з використанням рекурсивної функції

  7. Запишіть рекурсивну функцію та рекурсивний алгоритм обчислен­ня найбільшого спільного дільника (на основі алгоритму Евкліда, див. п.5.1, приклад 5.7) двох натуральних чисел.

  8. Опишіть рекурсивну функцію Root (F, a, b, Е), яка методом ділення навпіл знаходиш з точністю Е корінь рівняння F(x)=0 на відрізку [а,Ь]. Вважати, що Е>0, a<b, F(a)F(b)<0, і F(x) - безперервна та мо­нотонна функція на відрізку [а,Ь].