Mam procedurke która wywołuje sama siebie 500 000 razy :) , problem polega na tym że bez problemu się kompiluje ale nie działa :( (zawiesza sie program chyba :) ) jak zrobić by działała. Procedura jest szybka bo bez rekurencji działa poprawnie ale ja musze zrobić rekurencje.
Zapytaj nauczyciela, czy jest świadom jakiego stosu potrzbuje ta funkcja.... 500000 razy odłożone rejestry i adresy powrotne + jeszcze pewnie jakies zmienne lokalne.. Parę ładnych mega ;]
500000 razy sama siebie?
czyli za kazdym razem odpala sie jeszcze raz te 500000 razy.
W gre wchodzi tylko zamiana rekurencji na iteracje, nic innego nie zrobisz;]
NIe sama 500000 rzazy wywołuje jesze 500000, tylko jest wywoływana raz 500000 razy ;P . Zdaje sobie sprawe że zajmie kilka MB ;) może nawet kilkadziesiąt ;) jak zrobić żeby się nie zwieszał ? Zwiększyć rozmiar stosu jak tak to jak to zrobić ;P ?
Zmienny żadnych nie ma:).
a moze application.processmessages?
a moze application.processmessages?
n_a_v_ - a co to da? A poza tym to działa tylko w Delphi z unitem Forms a tu chodzi o FreePascala...
Powiedz nauczycielowi: "Od kiedy Pascal dysponuje takim stosem?". Czy twój nauczyciel umie liczyć? Daj mu kartke i każ mu liczyć te megabajty!
O jakim wy nauczycielu mówicie to ja nie wiem ;), bynajmniej zastąpiłem już rekurencje wiec problem zniknął:).
// no wiesz, wątek działa jak głuchy telefon - nikomu nie chce się czytać całego od początku, i czasem wychodzą głupoty :D - ŁF
(...) ale ja musze zrobić rekurencje.
O jakim wy nauczycielu mówicie to ja nie wiem ;)
Widzisz, zazwyczaj to, że ktoś musi zrobić coś na rekurencji wiąże się z tym, że nauczyciel informatyki kazał tak zrobić :]. Stąd parę osób wydedukowało, że to kwestia nauczyciela, który kazał zrobić Ci coś, co jest niewykonalne...
ja bym za takiego nauczyciela wiele dal, przynajmniej nie kaze uczyc Worda i Excela :)