Где оператор return требуется в рекурсивных функциях?

Вы можете добавить align-items: flex-start к своему #container_add_movies. Вот пример

-2
задан Quentin 29 March 2019 в 13:21
поделиться

2 ответа

Базовый случай здесь:

if maze[x][y]=='E' then return true

- если вы достигли конечной точки, вам удалось решить лабиринт, следовательно, лабиринт разрешим, и вы возвращаетесь true, чтобы сказать это. [1111 ]

Теперь, если вы достигли некоторой точки, которая еще не является конечной точкой, и рекурсивно исследовали остальную часть лабиринта (это то, что произошло в инструкции if), и вы получили true из рекурсивный вызов, затем этот рекурсивный вызов достиг конечной точки. Следовательно, лабиринт разрешим - возвращаемся true.

ПРИМЕЧАНИЕ

Представленный код является неверным : он не может правильно обрабатывать неразрешимый лабиринт.

Если лабиринт не разрешим, либо из-за отсутствия позиции 'E':

******
*....*
******

, либо из-за отсутствия подходящего пути:

**********
*........*
*.********
*......*E*
**********

код будет повторяться 'навсегда' до тех пор, пока стек не переполнится, а затем не завершится.

0
ответ дан CiaPan 29 March 2019 в 13:21
поделиться

Похоже, лабиринт создан как текстовый блок. * используется для обозначения стены или за ее пределами. Буква «Е» используется для обозначения выхода из лабиринта. Вероятно, это выглядело так:

********************E**
*......*......*......**
*.********.*******.****
*.....*......*........*
*.*************.*****.*
*..*............*****.*
***********************

Из строки y < 1 y> 8 размеры должны быть 8 высокими, но вы поняли идею. Когда в позиции находится буква «Е», то выход найден, и лабиринт решен. «A» и «H» используются для обозначения некоторой ширины. Я не совсем понимаю, но это та же идея.

Рекурсия работает так. Возьми мою отправную точку, скажем, х = 7, у = 6. Если это выход, то мы успешны. Если это на стене, мы потерпели неудачу. если это выходит за границы, мы потерпели неудачу, теперь проверьте все четыре местоположения вокруг меня и сделайте то же самое. Если какое-либо из этих четырех мест нашло выход, то мы успешны.

Если лабиринт разрешим, тогда мы получим «истину», если ветвь разрешима, то мы получим истину. Если лабиринт не может быть разрешен из заданной начальной позиции, возвращается false, а если ветвь не приводит к выходу, возвращается false.

0
ответ дан Kieveli 29 March 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: