所以我将这行代码作为函数的一部分,它接收"否"作为参数.
(cond ( (avaliar-no (no-tabuleiro no)) (return no)))
Run Code Online (Sandbox Code Playgroud)
问题是当我这样做时(return no)我得到这个错误:
Unknown block NIL in form
#S(COMPILER::MULTIPLE-TRANSFORMS-RECORD :FORMS (#
#) :ORIGINAL-PATH 3946)
Run Code Online (Sandbox Code Playgroud)
谁知道这可能是什么?
继承了整个功能(尚未完成)
(defun minimax (no estado)
(let ( (sucessores nil) (v nil))
;se o no for solucao entao retornamos esse nó e guardamos o seu custo na lista
(cond ( (avaliar-no (no-tabuleiro no)) (return no)) ;falta fazer o (setf *valoresF* valorDoNo)
;se nao for solucao entao expandimo o nó
(t(setf sucessores (no-sucessores no estado))))
;se o estado for min entao metemos o V a +oo e corremos o algoritmo para toda a lista de sucessores
;(cond ( (and(>= (length sucessores)1)(equal estado 'min)) (setf v 9999)
(loop (minimax (first sucessores) 'max) (setf sucessores (rest sucessores)) (setf v (min v *valoresF*)))))
Run Code Online (Sandbox Code Playgroud)
RETURN需要从某事物中回归.这个东西将是一个名为的块NIL.因此它只是一个较短的版本(return-from nil ...).
命名函数创建一个块,但不创建名称NIL.该名称块是函数的名称.因此你必须打电话(return-from function-name ...).