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

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


Като цяло същността е следната. Тази функция търси клетка в полето от позицията на мишката. Есно, резултатът тук може да е единственият. Тъй като функцията връща определен тип (точно тази клетка), тогава, съответно, можем да се върнем тук:
- верен отговор
- неправилно unswer
- нула
Нямаме нужда от грешен отговор. Нямаме нужда и от null (защото връщането на null в масив от клетки = оставяне на дупка). Тъй като функцията съдържа всякакви условия и рекурсия, трябва да отсечете всички изходи от функцията, с изключение на този, който дава правилния резултат.
В този случай глупаво прекъсвам функцията наполовина (след като е преброена правилната клетка) и през goto отивам до фиктивния метод "фиктив", чийто код е:
Това са нещата =))
Shl. Всичко това, разбира се, работи като часовник =) Въпросът е, смята ли се за нормално =)
ZZY. Сега излизам от функцията с просто рециклиране:
въпросът е за goto.
След това всичко това се връща към извикващия код, който продължава да се изпълнява, тоест функцията все още връща null и ефектът от извикването на манекена също е null.
Не си струва да търсите клетка рекурсивно, с голям брой клетки това ще доведе до препълване на стека и наистина няма нужда да зареждате памет, просто я изчислете математически.
Както разбирам, клетката ви не е квадратна, затова опишете по-подробно коя клетка, как е описана във вашия клас и как съхранявате информация за тези клетки (едномерен масив, двуизмерен масив, колекция или нещо друго).

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