Чтобы реализовать поиск в глубине в сетке, я написал такую функцию
(define (expand dim node visited obs)
(not-in (neighbor dim obs node) visited))
Функция dfs:
(dfs dim obs visited fringe path goal)
Единственное появление expand in dfs is
(expand dim (car fringe) visited obs)
И я позвонил dfs , используя
(dfs '(5 5) '((2 2) (3 2)) '((2 1)) '((1 1) (3 1)) '((2 1)) '(4 5))
dim это измерение - это список заблокированных позиций в сетке.
*1024* Когда я вызываю
, разверните вручную, это прекрасно работает.Но когда он вызывается в
dfs , он говорит "
expand: ожидает 1 аргумент, учитывая 4: '(5 5)' (1 1) '((2 1))' ((2 2) (3 2) (3 4) (4 4) (5 4))"
Однако, если я изменю позицию аргументов , развернем , например, положим obs в качестве второго аргумента,
(define (expand dim obs node visited)
(not-in (neighbor dim obs node) visited))
и соответственно измените dfs и мои вызовы, тогда ошибка не появится и все будет работать хорошо.Затем в следующий раз, когда я запускаю DrRacket и вставляю в него измененный код, снова появляется та же ошибка.Если я поменяю obs назад, это снова хорошо работает ... Что здесь происходит ?!Спасибо!