2.2. Ilustracja pojęcia rekurencji 31
od psychologii zachowań dziecka chwyciłby się za głowę z rozpaczy' czytając powyższy wywód... Dlaczego jednak zdecydowałem się na użycie takiego właśnie a nie innego - może bardziej informatycznego - przykładu? Otóż zasadniczym celem była chęć udowodnienia, iż myślenie w sposób rekurencyjny jest jak najbardziej zgodne z naturą człowieka i duża klasa problemów rozwiązywanych przez, umysł ludzki jest traktowana podświadomie w sposób rekurencyjny. Pójdźmy dalej z.a tym śmiałym stwierdzeniem: jeśli tylko zdecydujemy się na intuicyjne podejście do algorytmów rekurencyjnych, to nie będą one stanowiły dla nas tajemnic, choć być może na początku nie w' pełni uświadomimy sobie mechanizmy w nich wykorzystywane.
Powyższe wyjaśnienie pojęcia rekurencji powinno być znacznie czytelniejsze niż typowe podejście zatrzymujące się na niewiele mówiącym stwierdzeniu, że „program rekurencyjny jest to program, który wywołuje sam siebie”...
Program, którego analizą będziemy się zajmowali w tym podrozdziale, jest bardzo zbliżony do problemu klocków, z którym spotkaliśmy się przed chwilą. Schemat rekurencyjny zastosowany w nim jest identyczny, jedynie zagadnienie jest nieco bliższe rzeczywistości informatycznej.
Mamy do rozwiązania następujący problem:
• dysponujemy tablicą n liczb całkowitych tab[n]=tab[0], lab[l]... tab[n-l]\
• czy w tablicy lab występuje liczba a- (podana jako parametr)?
Jak postąpiłoby dziecko z przykładu, który posłużył nam za definicję pojęcia rekurencji, zakładając oczywiście, że dysponuje już ono pewną elementarną wiedzą informatyczną? Jest wysoce prawdopodobne, że rozumowałoby ono w sposób następujący:
• Wziąć pierwszy niezbadany element tablicy n-elementowej;
• jeśli aktualnie analizowany element tablicy jest równy x, to:
wypisz „Sukces ” / zakończ:
w' przeciwnym wypadku
Zbadaj pozostałą część tablicy n-1-elementowej.