🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #537

Re: rekurencja a pamiec ?

#537
From: Piotr Auksztulewicz
Date: Tue, 06 Jan 1998 12:02
26 lines
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-mail
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>

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