Article View: pl.comp.lang.c
Article #537Re: rekurencja a pamiec ?
From: Piotr Auksztulewicz
Date: Tue, 06 Jan 1998 12:02
Date: Tue, 06 Jan 1998 12:02
26 lines
2289 bytes
2289 bytes
Michał Suski <suseu@polbox.com> wrote: : moze sie i da, ale to bedzie syzyfowa praca w przypadku przeszukiwania : labiryntów dla znalezienia drogi z początku na koniec. ale i tak dzięki Nieprawda! Algorytm nierekurencyjny jest bardzo prosty! Oczywiście musi być to algorytm z powrotami, ale nie mysi być rekurencyjny. Tworzysz sobie programowo (na stercie) strukturę typu stos, w której przechowujesz ścieżkę, którą idziesz. Tworzysz pętlę while z warunkiem wyjścia takim, że kończy się ona, gdy jesteś w punkcie wyjścia z labiryntu. W każdym obiegu pętli robisz jeden krok "do przodu" (na przyległe pole, na którym jeszcze nie byłeś i na które da się przejść) lub "do tyłu" (gdy nie istnieje takie pole o jakim mowa w poprzednim nawiasie - wszedłeś w ślepy zaułek - i musisz się wycofać po własnych śladach). Przy poruszaniu się "do przodu" odkładasz aktualne współrzędne na stos i robisz krok, czyli zmieniasz aktualne współrzędne zgodnie z kierunkiem ruchu. Przy "cofaniu się" po prostu zdejmujesz ze stosu współrzędne pola, w którym byłeś poprzednio. Gdy pętla skończy się, na stosie masz szukaną ścieżkę. W ten sposób nie używasz stosu procesora, który rzeczywiście może się przepełnić przy dużych labiryntach. Programowo możesz sobie zrobić taki stos na ile masz pamięci w kompie. -- Piotr Auksztulewicz piotras@zeus.polsl.gliwice.pl Centrum Komputerowe Politechniki Śląskiej, Gliwice, Akademicka 16
Technical Details
Message-ID:
<68t6g2$cgm@zeus.polsl.gliwice.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!polsl.gliwice.pl!not-for-mailReferences:
<01bd189a$8c52aaa0$LocalHost@suseu> <68ol25$qff$1@domek.slodki.domek> <01bd1971$50cc3140$48fa74c3@suseu> <68pdoh$dct$1@domek.slodki.domek> <01bd1a67$beae75a0$08fa74c3@suseu>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!ict.pwr.wroc.pl!polsl.gliwice.pl!not-for-mail From: Piotr Auksztulewicz <piotras@zeus.polsl.gliwice.pl> Newsgroups: pl.comp.lang.c Subject: Re: rekurencja a pamiec ? Date: 6 Jan 1998 12:02:10 GMT Organization: Politechnika Slaska, Gliwice Lines: 26 Message-ID: <68t6g2$cgm@zeus.polsl.gliwice.pl> References: <01bd189a$8c52aaa0$LocalHost@suseu> <68ol25$qff$1@domek.slodki.domek> <01bd1971$50cc3140$48fa74c3@suseu> <68pdoh$dct$1@domek.slodki.domek> <01bd1a67$beae75a0$08fa74c3@suseu> NNTP-Posting-Host: zeus.polsl.gliwice.pl Mime-Version: 1.0 User-Agent: tin/pre-1.4-971215 (UNIX) (HP-UX/B.10.20 (9000/800)) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit