Kwalifikacja: EE8 - Kwalifikacja EE8
Zawód: Technik informatyk
Poniższa procedura rekurencyjna druk(n:integer), wywołana z argumentem 5, spowoduje wyświetlenie na ekranie komputera
procedure druk(n:integer); begin if n=0 then exit; writeln(n); druk(n-1); end;
procedure druk(n:integer); begin if n=0 then exit; writeln(n); druk(n-1); end;
Odpowiedzi
Informacja zwrotna
Procedura rekurencyjna druk(n:integer) działa na zasadzie rekurencji, co oznacza, że funkcja wywołuje samą siebie z mniejszymi wartościami parametru n, aż osiągnie stan bazowy, w którym n wynosi 0. W momencie, gdy n jest różne od 0, procedura wykonuje dwa kluczowe kroki: najpierw wyświetla wartość n na ekranie, a następnie wywołuje samą siebie z argumentem n-1. Dzięki temu, gdy wywołamy druk(5), na ekranie pojawią się wartości od 5 do 1, w kolejności malejącej, co daje nam ciąg 5, 4, 3, 2, 1. Rekurencja jest powszechnie stosowana w programowaniu, szczególnie w algorytmach, które wymagają podziału problemu na mniejsze podproblemy, co jest zgodne z zasadami dobrych praktyk w inżynierii oprogramowania. Przykładem zastosowania rekurencji może być obliczanie silni liczby, gdzie wartość n! jest definiowana jako n * (n-1)!.
Odpowiedzi, które wskazują na inne wyniki, bazują na błędnych interpretacjach działania procedury rekurencyjnej. Osoby, które wybrały odpowiedzi takie jak ciąg liczb 1, 2, 3, 4, 5 lub liczba 5, mogą nie rozumieć, że rekurencja w tym kontekście działa w odwrotnej kolejności. Procedura druk(n) najpierw wyświetla bieżącą wartość n, a następnie przechodzi do mniejszej wartości n-1, co skutkuje wyświetleniem wartości w porządku malejącym. To kluczowy błąd myślowy, który prowadzi do mylnego wyobrażenia o tym, jak działają funkcje rekurencyjne. Wybór liczby 0 również odnosi się do nieporozumienia, ponieważ procedura kończy działanie tylko wtedy, gdy n stanie się równe 0, co nie oznacza, że ta wartość zostanie wydrukowana. W praktyce, zrozumienie działania rekurencji wymaga znajomości stanu bazowego oraz sposobu, w jaki funkcje wykonują swoje wywołania. Wszelkie błędy w rozumieniu tego procesu mogą prowadzić do niepoprawnych wniosków, co podkreśla znaczenie dokładnej analizy kodu przed wyciągnięciem konkluzji.