СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Рекурсивные выражения. Алгоритмы с рекурсией

Категория: Информатика

Нажмите, чтобы узнать подробности

Задачи ЕГ по информатике В6-В11 на вычисление возвратных последовательностй, методы решения "с конца" динамического программирования

Просмотр содержимого документа
«Рекурсивные выражения. Алгоритмы с рекурсией»

В6_ В11 ЕГ рекурсивные процедуры рекуррентные функции

Найти сумму чисел, кот б вывед при выз F(1)

Ск симв * б напеч при вып вызова F(7)?

procedure F(n: integer);

begin

writeln(n);

if n

begin F(n+2); F(n*3) end

end;

procedure F(n: integer);

begin

writeln('*');

if n 0 then begin

F(n-2);

F(n div 2)

end

end;

Реш 1( метод подст:

1) снач опр рекур флу; обозн G(n) сумму чисел, кот выв при вызове F(n)

2) при n = 6 процедура выв число n и заканч работу без рекурс вызовов: G(n) = n при n = 6

3) при n

4) в рез вызова F(1) получ G(1) =1 +G(3)+G(3) G(3)=3+G(5)+G(9)=3+G(5)+9G(5)=5+G(7)+G(15)=5+7+15=27 5) исп обр подст: G(3) =3 +G(5) +9=3 +27+9 = 39 G(1) = 1 + 2*G(3) = 79 6) Ответ: 79

Реш1 ( динам прог):

п. 1-3 такие же, как в первом варианте решения

запол таблицу G(n) при n = 6 (где G(n) = n)

ост ячейки заполн, нач с n = 5 справа налево, исп ф-лу :G(n)=n+G(n+2)+G3n)

Реш2

G(n) = 1 при всех n G(n)=1+G(n-2)+G(n div 2) при n 0

по этим ф-лам заполняем таблицу, нач с 0:

G(0) = 1 G(1) = 1 + G(-1) + G(0) = 1 + 1 + 1 = 3

G(2) = 1+ G(0) + G(1) = 1+1 +3 = 5 G(3) =1+G(1)+G(1) = 1+3+3 = 7

G(4) = 1+G(2)+ G(2)= 1+5+5= 11 G(5) =1 + G(3) + G(2) = 1 + 7 + 5 = 13

G(6) = 1+G(4) + G(3) = 1 +11+7 =19 G(7) =1+G(5)+G(3)= 1+13+7 = 21

Реш2, «с конца»):

пп. 1-3 – как в вар 1

по флам G(7) = 1+ G(5) + G(3), поэтому н найти G(5) и G(3)

G(5) = 1 + G(3) + G(2), н G(3) и G(2) G(3) = 1 + G(1) + G(1), н G(1)

G(2) =1+G(0)+G(1) =2 +G(1), н G(1) G(1)=1+G(-1)+G(0) =1+1+1=3

теперь идем «обратным ходом»:

G(2) = 2 + G(1) = 5 G(3) = 1 + G(1) + G(1) = 1 + 3 + 3 = 7

G(5) = 1 + G(3) + G(2) = 1 + 7 + 5 = 13 G(7) = 1 + G(5) + G(3) = 1 + 13 + 7 = 21

Чему равно зн величины F(5)/G(5)?

Ск * напеч эта проц при вызове F(6)?

F(1) = 1; G(1) = 1;

F(n) = F(n – 1) – G(n – 1),

G(n) = F(n–1) + G(n – 1), при n =2

procedure F(n: integer);

begin

if n

else begin

F(n-1);F(n-2); F(n-2)

end;

end;

Реш 1

F(5)/G(5) = 1

Реш 2

запишем в таблицу базовые случаи

для бóльших n имеем рек ф-лу F(n) = F(n-1) +F(n-2)+F(n-2) = F(n-1)+2*F(n-2)

заполняем табл, используя рекуррентную формулу

F(3) = F(2) + 2*F(1) = 3 F(4) = F(3) + 2*F(2) = 5

F(5) = F(4) + 2*F(3) = 11 F(6) = F(5) + 2*F(4) = 21


сумма всех чисел, при вып вызова F(9)

Ск * б напеч при вып вызова F(11)?

procedure F(n: integer);

begin

if n 0 then

begin

F(n - 4); writeln(n); F(n div 3)

end

end;

begin

if n 0 then G(n - 1);

end;

procedure G(n: integer);

begin

writeln('*'); if n 1 then F(n - 2);

end;

F(1) = 1 F(2)=2+ F(2-4)+F(2 div 3) =2

F(3)=3+F(3-4)+F(1)=4 F(4) =4+F(1)=5

F(5) =5+F(1)+F(1)=7 F(6) =6+F(2)+F(2)=10

F(7) =7+F(3)+F(2)=13 F(8) =8+ F(4)+F(2)=15

F(9) = 9+ F(5)+ F(3)=20 Отв 20

g(n) = 1 + g(n - 3), при n =3,

g(n) = 1, при n

Отв 4

Метод 2-ичн дерева

procedure F(n: integer);

begin

writeln(n);

if n

BeginF(n + 1);F(n + 3) end

end;

Найдите сумму чисел, которые будут вывед при вызове F(1).

складывая все эти числа, получаем 49

http://информатика.1сентября.рф/article.php?ID=200800502

Во всех зад В в отв запишите только натуральное число.

B6 № 4558. Алгоритм вычисл зн функции F(n), где n – нат

F(1) = 1 F(n) = F(n–1) * n, при n 1 Чему равно зн функ F(5)?

B6 № 4642. Алг вычисл зн функции F(n), где n – нат число, задан след соотн:
F(1) = 3 F(n) = F(n–1) * (n–1), при n 1 Чему равно зн функ F(6)?

B6 № 4643. Алг вычисл зн функции F(n), где n – натуральн, задан след соотн:
F(1) = 1 F(n) = 5*F(n–1) + 3*n, при n 1 Чему равно зн функ F(4)?

B6 № 4644. Алгоритм вычисл зн ф F(n), где n – нат, задан следующ соотн:
F(1) = 1 F(n) = F(n–1) * F(n–1) − F(n–1) * n + 2 * n, при n 1 Чему равно знач ф F(4)?

B6 № 4645. Алгоритм вычисл зн функции F(n), где n – нат, задан след соотн:
F(1) = 1 F(2) = 3 F(n) = F(n–1) * n + F(n–2) * (n – 1) , при n 2 Чему равно зн ф F(5)?

B6 № 4646. Алг вычисл зн функции F(n), где n – нат, задан след соотн:
F(1) = 1 F(2) = 3 F(n) = F(n−1) * F(n−2) + (n−2), при n 2 Чему равно з функции F(5)?

B6 № 4647. Алгоритм вычисл зн функции F(n), где n – нат, задан соотношениями:
F(1) = 1 F(2) = 2 F(n) = 2 * F(n–1) + (n – 2) * F(n–2), при n 2
Чему равно зн функции F(6)?

B6 № 4648. Посл-ть чисел Фибоначчи зад рек соот:
F(1) = 1 F(2) = 1 F(n) = F(n–2) + F(n–1), при n 2, где n – нат.
Чему равно 8-е число И 9-е число в посл-ти Фибоначчи?

B6 № 4650. Посл-ть чисел трибоначчи задается рекурр соот:
F(1) = 0 F(2) = 1 F(3) = 1 F(n) = F(n–3) + F(n–2) + F(n–1), при n 3, где n – нат.
Чему равно 9-е число в посл-ти трибоначчи? Чему равно 11-е число в посл-ти трибоначчи?

B6 № 4652. Посл-ть чисел Люка задается рек соотношением:
F(1) = 2 F(2) = 1 F(n) = F(n–2) + F(n–1), при n 2, где n – нат.
Чему равно 8 число в посл=ти Люка? Чему равно 10-е число в посл-ти Люка?

B6 № 4654. Посл-ть чисел Падована задается рекуррентным соотношением:
F(1) = 1 F(2) = 1 F(3) = 1 F(n) = F(n–3) + F(n–2), при n 3, где n – натуральное число.
Чему равно 10-е число в посл-ти Падована? Чему равно 12-е число в посл-ти Падована?

B6 № 4656. Алг вычисл з функции F(n) и G(n), где n – нат, задан след соотн:
F(1) = 0 F(n) = F(n–1) + n, при n 1 G(1) = 1 G(n) = G(n–1) * n, при n 1
Чему равно зн функции F(5) + G(5)?

B6 № 4657. Алг вычисл зн функции F(n) и G(n), где n – нат, задан сле соотн:
F(1) = 1 F(n) = 2 * G(n–1) + 5 * n, при n 1 G(1) = 1 G(n) = F(n–1) + 2 * n, при n 1
Чему равно значение функции F(4) + G(4)?

B6 № 4658. Алгоритм вычисл зн функции F(n), где n – натур, задан след соотношениями:
F(1) = 1 F(2) = 1 F(n) = F(n–1) * n − 2 * F(n–2), при n 2
Чему равно значение функции F(6)?

B6 № 4659. Алгоритм вычисл зн функции F(n), где n – нат, задан след соотн:
F(1) = 1 F(2) = 2 F(n) = F(n–1) − F(n–2) + 2 * n, при n 2
Чему равно з функции F(6)?

B6 № 4660. Алгоритм вычисл зн функ F(n), где n – натур, задан след соотн:
F(1) = 1 F(2) = 2 F(n) = (F(n–1) − F(n–2)) * n, при n 2
Чему равно значение функции F(8)?

B6 № 4692. Алгоритм вычисл зн функции F(n). где n — нат, задан след соотн:
F(1) = 1; F(n) = F(n-1) * (n+1), при n 1. Чему равно зн функции F(4)?

B6 № 4724. Алгоритм вычисл зн функции F(n). где n — нат, задан след соотн:
F(1) = 1; F(n) = F(n-1) * (n+1), при n 1. Чему равно зн функции F(5)?

задачи на алг – прогр цикл не использовать

вывод цифр p-ичн предст зад 10-ичн нат числа (2≤p≤9).

Вып действий после рекурс вызова ( на рекурсивном возврате)

Procedure From10(a: longint; p: byte);
Var remin: byte; 
Begin
If a = p Then 

From10(a div p, p);
remin := a mod p; { ост для тек зн парам процедуры}
write(remin); {Вывод его}
End;

Вывод всех делителей нат числа.

выв все делит ч-ла n

обнар делит, не превыш 

Var n, d: longint;
begin
For d := 1 To n div 2 Do 
If n div 2 = 0 Then write(n div d, ' ')
write(n)

end

Var n, d: longint;
begin

For d := 1 To Trunc(Sqrt(n)) — 1 Do
If n mod d = 0 Then write(d, ' ', n div d, ' ');
If Sqr(Trunc(Sqrt(n))) = n then write(Trunc(Sqrt(n)));

end

Чтоб делители б напеч в порядке возр н исп рекурсию

Procedure Dived(n, d: longint); //Вывод всех делителей нат числа

Var dd: longint; //dd — делитель симм найденному

Begin

if (dn) then Exit;

If n mod d = 0 Then {встретился делитель n}

Begin

dd := n div d;{Запоминаем 'симметричный' делитель}

If (d dd) Then

Begin

Dived(n, d + 1);{Перех к проверке след числа d}

write(dd, ' ');{После возвр из проц Dived печат делитель dd}

End

End

Else {n mod d 0}

Dived(n,d+1); {провер следующего числа d}

End;

действия как на рекурс спуске, так и на рекурсив возврате).

1. Разр прогр для расч чла сочет из n эл по m (о ), исп рекурс описание: 

Function Cnm(n, m: byte): word;
Begin
If (m = 0) Or (n = m) Then Cnm := 1 
Else Cnm := Cnm(n — 1, m) + Cnm(n — 1, m — 1)
End;

расчет суммы n 1х членов арифм прогр.

расчет суммы n 1х членов геом прогр.

Function Summ_Ar_n(a1, d: real; n: byte): real;
Begin
If n = 1 Then Summ_Ar_n := a1
Else Summ_Ar_n := Summ_Ar_n(a1, d, n — 1) + Ar_n(a1, d, n)
End;

Function Summ_Geo_n(a1, d: real; n: byte): real;
Begin
If n = 1 Then Summ_Geo_n := a1
Else Summ_Geo_n := Summ_Geo_n(a1, d, n — 1) + Geo_n(a1, d, n)
End;

1)Для зад целого a и нат n вычислить .

3) Вычислить n-й член посл-ти Фибоначчи

4) При пом рекурс функции опр кол цифр в зад нат числе n

6)Для зад одномерн массива A из N эл найти зн макс эл массива. Рекурсив функцию примен каждый раз отд для первой трети массива и для ост части (2/3) массива. Рекурс вызовы заканчи, когда ост только один или два элемента. Напр, для N=6:

7) Составить прог-функцию возвр наиб общий делитель двух нат чисел x и y.

Реш. Обозн через nod(x,y) – наиб общий делитель x и y. Известно, что

 

8) Сост прогр-функцию, возвр наим общ кратное нат чисел ap (p=0..n-1, n³2), явл к-тами вектора v=(a0,a1,…,an-1)T.

Реш. Обозн через nok(a0,a1,…,an-1) – наим общее кратное чисел ap (p=0..n-1). Известно, что

и

Далее, если n ³2 и dn(n)=2, то n – простое. но пров n на простоту этим спос весьма неэкономна

10) Составить прогр-функцию провер, явля ли заданное натурально число n простым?

Решение. Пусть рекурсивная функция isprim(n) явл решением задачи и

 

рассм след обобщ зад. Пусть a, b, n - нат числа и . Верно ли, что зад n не дел ни на одно целое из отрезка [a, b]? Пусть эту задачу решает функция

  


Скачать

Рекомендуем курсы ПК и ППК для учителей

Вебинар для учителей

Свидетельство об участии БЕСПЛАТНО!