Рекурсивни алгоритми

По-долу има две рекурсивни процедури, F и G:

процедура F (n: цяло число); напред;

процедура G (n: цяло число); напред;

процедура F (n: цяло число);

процедура G (n: цяло число);

Колко звездички ще бъдат отпечатани на екрана при извикване на F (11)?

Паскал, среща с екипа F(11), извиква процедурата F и му предава параметъра н = 11:

ако състоянието н > 0 изпълнява се следният ред: G (n - 1), процедура за извикване G след намаляване н от 1

процедура G отпечатва звездичка и, ако условието е изпълнено н > 1, намалява стойността н с 3, след което с нов параметър извиква процедурата F (7)

ако е изпълнено условието n> 0, се изпълнява следният ред: G (n - 1), процедура за извикване G след намаляване н от 1

процедура G отпечатва звездичка и, ако условието е изпълнено, намалява стойността н с 3, след което с нов параметър извиква процедурата F (3)

ако е изпълнено условието n> 0, се изпълнява следният ред: G (n - 1), процедура за извикване G след намаляване н от 1

процедура G отпечатва звездичка и, ако условието е изпълнено, намалява стойността н с 3, след което с нов параметър извиква процедурата F (-1)

след като получи стойност -1 и се увери, че условието не е изпълнено, Паскал прекратява програмата.

И просто трябва да изчислим колко пъти е била отпечатана звездичката. В нашия случай това се случи точно 3 пъти

Общо, верен отговор: 3

Внимание! За да превъртите условието на анимацията, кликнете върху него с левия бутон на мишката и натиснете бутона „НАДОЛУ“ или „НАГОРЕ“

Интерактивен треньор 11 Унифициран държавен изпит DEMO 2015
за "Рекурсивни алгоритми"

Ако уловът на задачата не е напълно видим, щракнете върху него с курсора на мишката и натиснете клавиша "надолу" или "нагоре"

Примери за задачи и техните решения, генерирани от интерактивен симулатор за задачи 11 Унифициран държавен изпит 2015 г.
Рекурсивни алгоритми.

Задача номер 1. Даден рекурсивен алгоритъм:

процедура F (n: цяло число);
започнете
writeln (n);
ако n = 5, процедурата извежда числото n и излиза без рекурсивни повиквания:
S (n) = n за n> = 5
за n = 5
S (n) = n + S (n + 1) + S (n + 3)

Превъртете през цикъла на стъпки от -1, започвайки от стойност по-малка от 5

S (4) = 4 + S (5) + S (7) = 4 + 5 + 7 = 16
S (3) = 3 + S (4) + S (6) = 3 + 16 + 6 = 25
S (2) = 2 + S (3) + S (5) = 2 + 25 + 5 = 32
S (1) = 1 + S (2) + S (4) = 1 + 32 + 16 = 49
по този начин верният отговор = 49

Проблем 2

Даден рекурсивен алгоритъм:
процедура F (n: цяло число);
започнете
writeln (n);
ако n = 6

Скролиране на писане като цяло

S (5) = 5 + S (7) + S (15)
S (4) = 4 + S (6) + S (12)
S (3) = 3 + S (5) + S (9)
S (2) = 2 + S (4) + S (6)
S (1) = 1 + S (3) + S (3)

от последното уравнение виждаме, че се нуждаем от третото и петото уравнения, така че най-накрая получаваме:

S (5) = 5 + S (7) + S (15) = 5 + 7 + 15 = 27
S (3) = 3 + S (5) + S (9) = 3 + 27 + 9 = 39
S (1) = 1 + S (3) + S (3) = 1 + 39 + 39 = 79

Задача номер 3 Алгоритъмът за изчисляване на стойността на функцията F (n), където n е естествено число, се дава от следните отношения: