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

Інформатика 10 (АП) Урок 82

Урок  82 -83                                                              Інформатика (АП)             

Використання рекурсивних алгоритмів. Розв’язування задач.

Мета.

Навчальна. Вчитися використовувати рекурсивні алгоритмидо розв’язування задач.

Розвиваюча. Розвивати логічне мислення, самостійність, вміння розуміти і бачити структуру програми, що працює з масивом.

Виховна. Виховувати наполегливість, зібраність, уважність, грамотно висловлювати свої думки, вміння раціонально використовувати час.

Тип уроку. Засвоєння нових знань, вмінь і навичок.

Матеріали  для роботи з учнями:

Рекурсія.

Рекурсія і побічний ефект.

Рекурсія приклади задач.

Ханойська вежа

План

  1. Перевірка домашнього завдання.

  2. Актуалізація опорних знань.

  3. Вивчення нового матеріалу.

  4. Розв’язування вправ.

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

  6. Домашнє завдання.

                                                         

Пам’ятка для учня!

  1. Пригадайте правила техніки безпеки при роботі з ПК.

  2. Через кожні 15 хв виконуйте вправи для очей та для зняття м’язової втоми.

Хід уроку

1. Перевірка домашнього завдання.

  1. Наявність.

  2. Питання.

2. Актуалізація опорних знань.

  1. Що таке рекурсія?

  2. Який об'єкт або процес називають рекурсивним?

  3. Наведіть приклади рекурсивного визначення.

  4. Як виконується рекурсивний алгоритм?

  5. Поясніть виконання рекурсивної функції обчислення степеня з на­туральним показником.

  6. Для даної функції обчисліть А (2), А (4):

Function A(N:lnteger):lnteger;

Begin

If N<= 1 Then A:=1

Else A:=A(N-1)+A(N-2);

End;

  1. Які з наступних описів функції F(n), яка призначена для обчислення т!, є правильними?     в)  Function F (N 'lnteger): Integer;

  Begin

If N=0 Then F:=1

Else F:=N*F(N-1)

  End;

  1. Рекурсивно опишіть функцію C(m,n), де 0<=m<=n,

  2. Для даної функції обчисліть F(106), F(99), F(85). Яких взагалі зна­чень набуває ця функція?

Function F (N:lnteger):lnteger;

Begin

If N>100 Then F:=N-10 Else F:=F (F (N+11))

End;

  1. Яким буде результат такого виклику процедури: Rev(153)?

Procedure Rev (Nilnteger);

Begin

Write (N Mod 10);

If ((N Div 10)<>0) Then Rev (N Div 10)

End;

  1. Що виведе на екран програма?

Program Pr;

Var n: Integer;

Procedure Rr (Var K:Integer);

Begin

If K<>5 Then Begin WriteLn (K);

  K:=K+1;

  Rr (K)

End;

K:=K— 1;

WriteLn (K)

End;

Begin

N:=1; Rr(N)

End.

  1. Що виведе на екран програма ?

Program Prikl;

Var n: Integer;

Procedure Rec (Var Kilnteger);

Begin

While K<5 Do Begin

WriteLn (K);

K:=K+1;

Rec (K) End;

K:=K+1;

WriteLn (K)

End;

Begin

N:=1; Rec(N)

    End.

3. Мотивація.

Рекурсивні алгоритми досить часто використовуються при складанні комп'ютерних програм. Рекурсивна форма організації ал­горитму найчастіше виявляється компактніше нерекурсивної, але працює в деяких випадках повільніше.

Наприклад, повернемося до алгоритму обчислення п-то числа Фібоначчи. Рекурсивний алгоритм, який розглядається у прикладі 10.15, виглядає простим, але працює дуже неекономно: обчислення ФЩ.6) потребує 14 самовикликів підпрограми, а на виході з рекур- сії виконається 7 операцій додавання.

Нерекурсивний алгоритм (приклад 5.17) шосте число Фібо­наччи обчислить на 4-му кроці. Кількість дій при рекурсивному обчисленні числа Фібоначчи різко збільшується, проте при обчис­ленні факторіала кількість дій при виконанні рекурсивної функції і при обчисленні в циклі однакова. Тому, хоча скласти рекурсивний алгоритм буває простіше ніж нерекурсивний, користатися рекурсі-єю треба обережно.

Рекурсивні алгоритми природно виникають у тих випадках, коли вихідну .задачу можна звести до такої ж задачі, але з іншими аргументами або в іншій обстановці. При цьому створення нереку­рсивного алгоритму може виявитися занадто складним.