У меня есть глубокий рекурсивный процесс, который выводит список, когда находит решение проблемы, но этот список создается очень глубоко рекурсивно.Это код:
(define (dfs start target)
(define (dfs-helper start target path new-links final-path)
(display final-path) (newline)
(if (null? final-path)
(if (or (null? new-links) (member start path)) '()
(first-not-null (lambda (x)
(if (= start target) (dfs-helper x target path '() (append path (list start))) (dfs-helper x target (append path (list start)) (get-neighbors x) final-path)))
(get-neighbors start))
)
final-path
)
)
(dfs-helper start target '() (get-neighbors start) '())
)
(я извиняюсь за странное форматирование)
В любом случае это выдает следующее:
...
()
()
(1 7 20 15 22 23 39 40 49 41 31 25 17 18 9 19 26 36 27 12 11 10 3 13 14 21 28 37 43 53 44 52 51 42 50 54 57 58 61 62 60 63)
7
Это та секунда из последнеголиния, которая мне нужна.Как вы можете видеть, когда я отображаю 'final-path', я получаю то, что хочу, но по какой-то причине (я думаю, что из-за всех рекурсивных вызовов) фактическая переменная в конце равна просто 7, а не списку всех чиселЯ хочу.Как я могу получить свой код для вывода этой секунды из последней строки, чтобы я мог манипулировать списком, который он возвращает?