我正在编写一个函数,该函数需要一个战斗的骑士列表。运行他们的战斗的代码正在运行(jousting-game),现在我正在编写一个锦标赛系统,但我无法让我的锦标赛轮工作。正如我所说,它需要一个骑士列表,让他们递归地战斗,直到每个人都战斗,然后返回两个列表,一个是胜利者,一个是失败者。我已经尝试了我所知道的一切,无论我做什么,我都会收到错误并且代码拒绝工作,我不明白为什么。这是我到目前为止所写的:
(define (playTourneyRound knightList)
(
(cond
((> (length knightList) 1)
(let (
(winner (jousting-game (car knightList) (cadr knightList)))
(winners (list))
(losers (list))
(results (playTourneyRound (cddr knightList)))
)
(if (= winner 1) (winners (append winners (list (car knightList)))) (winners (append winners (list (cadr knightList)))))
(winners (append (car results)))
(losers (list (cadr knightList) (cadr results)))
(list winners losers)
)
)
((= (length knightList) 1)
(list knightList)
)
)
(list '() '())
)
)
有人可以向我解释为什么我收到错误“非程序调用:#”,我以后如何避免这个错误?我确定我只是不了解重要的方案/lisp,我真的可以使用一个解释。
感谢大家的帮助,问题已经解决