WorksheetsRekurencja
Total questions: 15
Worksheet time: 8mins
Name
Class
Date
1.
Zgodnie z materiałem źródłowym, proces rekurencyjnego rozwiązywania problemu składa się z dwóch głównych faz. Jakie to fazy?
a)
Faza kompilacji kodu oraz faza wykonania programu.
b)
Faza definiowania warunku początkowego oraz faza wywoływania samej siebie.
c)
Faza redukcji rozmiaru problemu oraz faza zbierania i łączenia wyników.
d)
Faza inicjalizacji zmiennych oraz faza pętli iteracyjnej.
2.
Jaki element jest niezbędny w każdej funkcji rekurencyjnej, aby zapobiec jej nieskończonemu wykonywaniu się?
a)
Pętla 'for' lub 'while'.
b)
Wywołanie rekurencyjne z mniejszym parametrem.
c)
Użycie co najmniej dwóch argumentów w funkcji.
d)
Warunek początkowy (brzegowy).
3.
Co zwróci poniższa funkcja Pythona dla wywołania `CiagRek(4)`?
python
def CiagRek(n):
if n == 1:
return 1
else:
return 3 * CiagRek(n-1)
a)
81
b)
27
c)
12
d)
9
4.
Jakie zjawisko graficzne, polegające na umieszczeniu obrazu wewnątrz samego siebie, zostało podane w materiale jako przykład rekurencji?
a)
Efekt Droste
b)
Fraktal Mandelbrota
c)
Dywan Sierpińskiego
d)
Złota proporcja
5.
Jaka jest główna wada naiwnej rekurencyjnej implementacji funkcji obliczającej n-ty wyraz ciągu Fibonacciego, zilustrowana na schemacie wywołań w tekście?
a)
Wielokrotne obliczanie tych samych wartości dla tych samych argumentów.
b)
Zbyt duże zużycie pamięci operacyjnej na stosie wywołań.
c)
Brak możliwości obliczenia wartości dla ujemnych `n`.
d)
Trudność w zdefiniowaniu warunków brzegowych dla `n=0` i `n=1`.
6.
Która technika programistyczna została użyta w funkcji `CiagIter` do obliczenia wartości ciągu w sposób alternatywny do rekurencji?
a)
Wywołanie innej funkcji pomocniczej
b)
Pętla `for`
c)
Listy składane
d)
Instrukcja warunkowa `if-elif-else`
7.
W rekurencyjnej implementacji algorytmu Euklidesa `NWDRek(a, b)`, jaki jest warunek brzegowy (przypadek bazowy) kończący rekurencję?
a)
Gdy `b` jest równe 0.
b)
Gdy reszta z dzielenia `a` przez `b` jest większa od `b`.
c)
Gdy `a` jest równe 0.
d)
Gdy `a` jest równe `b`.
8.
Co oblicza operator `%` (modulo) w wywołaniu `NWDRek(b, a % b)` w rekurencyjnym algorytmie Euklidesa?
a)
Procent `b` z `a`.
b)
Wynik dzielenia całkowitego `a` przez `b`.
c)
Wartość bezwzględną różnicy `a` i `b`.
d)
Resztę z dzielenia `a` przez `b`.
9.
W funkcji `FibIter(n)`, służącej do iteracyjnego obliczania ciągu Fibonacciego, jaka jest rola zmiennej `pom`?
a)
Liczy, ile iteracji pętli zostało wykonanych.
b)
Przechowuje ostateczny wynik, który jest zwracany na końcu.
c)
Sprawdza, czy nie został przekroczony maksymalny limit `n`.
d)
Tymczasowo przechowuje wartość, aby umożliwić poprawne przypisanie nowych wartości.
10.
Ile razy zostanie wywołana funkcja `FibRek(1)` podczas obliczania wartości `FibRek(4)`?
a)
3 razy
b)
2 razy
c)
1 raz
d)
5 razy
11.
Co zwróci poniższa funkcja dla wywołania `Oblicz(5)`?
python
def Oblicz(n):
if n <= 0:
return 0
else:
return n + Oblicz(n-2)
a)
15
b)
9
c)
8
d)
5
12.
W rekurencyjnej implementacji algorytmu Euklidesa, co zwraca wywołanie `NWDRek(192, 42)`?
a)
6
b)
24
c)
42
d)
14
13.
Które stwierdzenie najlepiej opisuje różnicę między podejściem rekurencyjnym a iteracyjnym, zgodnie z przedstawionymi przykładami?
a)
Rozwiązania rekurencyjne są zawsze krótsze i bardziej eleganckie, ale mniej wydajne od iteracyjnych.
b)
Rozwiązania iteracyjne są zawsze trudniejsze do zaimplementowania niż rekurencyjne.
c)
Każdy problem rekurencyjny można rozwiązać tylko w ten sposób i nie da się go zapisać iteracyjnie.
d)
Rekurencja zużywa mniej pamięci komputera niż iteracja.
14.
Analizując kod funkcji `FibRek`, jakie są w nim zdefiniowane warunki brzegowe?
a)
Tylko dla `n == 0`.
b)
Tylko dla `n == 1`.
c)
Funkcja nie ma jawnie zdefiniowanych warunków brzegowych.
d)
Dla `n == 0` i `n == 1`.
15.
Co zwróci poniższa funkcja rekurencyjna dla wywołania `SumaCyfr(345)`?
python
def SumaCyfr(n):
if n < 10:
return n
else:
return n % 10 + SumaCyfr(n // 10)
a)
60
b)
12
c)
3
d)
345
100 %
