Прекъсване на рекурсия чрез goto

рекурсия

Да приемем, че има код като този.

Въпросът е, че този метод трябва да връща правилния отговор в НЯКОЙ случай (плочки [yarray, xarray]) и никога да не връща null. Така че се опитвам да предотвратя това с джъмпери. Въпросът е чисто теоретичен. Този метод нарушава ли някои правила за кодиране?

Globals.ServiceRecursionLoopBreaker () - празен метод.

прекъсване

прекъсване

Като цяло същността е следната. Тази функция търси клетка в полето от позицията на мишката. Есно, резултатът тук може да е единственият. Тъй като функцията връща определен тип (точно тази клетка), тогава, съответно, можем да се върнем тук:

- верен отговор
- неправилно unswer
- нула

Нямаме нужда от грешен отговор. Нямаме нужда и от null (защото връщането на null в масив от клетки = оставяне на дупка). Тъй като функцията съдържа всякакви условия и рекурсия, трябва да отсечете всички изходи от функцията, с изключение на този, който дава правилния резултат.

В този случай глупаво прекъсвам функцията наполовина (след като е преброена правилната клетка) и през goto отивам до фиктивния метод "фиктив", чийто код е:

Това са нещата =))

Shl. Всичко това, разбира се, работи като часовник =) Въпросът е, смята ли се за нормално =)

ZZY. Сега излизам от функцията с просто рециклиране:

въпросът е за goto.

След това всичко това се връща към извикващия код, който продължава да се изпълнява, тоест функцията все още връща null и ефектът от извикването на манекена също е null.

Не си струва да търсите клетка рекурсивно, с голям брой клетки това ще доведе до препълване на стека и наистина няма нужда да зареждате памет, просто я изчислете математически.
Както разбирам, клетката ви не е квадратна, затова опишете по-подробно коя клетка, как е описана във вашия клас и как съхранявате информация за тези клетки (едномерен масив, двуизмерен масив, колекция или нещо друго).

Файлово разширение

диадиавова, Изчислявам всичко математически. Програмата изглежда работи за мен, както се очакваше, въпросът беше чисто теоретичен =)