1 recursion ocaml tuples list towers-of-hanoi
我是初学者OCaml程序员,试图在解决方案中创建一个函数来解决OCaml中的河内问题塔的问题,表示一个移动列表,其中"移动"存储在窗体的元组中(startPeg,endPeg).
这是我到目前为止:
type peg = A | B | C
type move = peg * peg
let towers (m : int) : (move list) =
let rec solve n a b c = match n with
|0 -> []
|_ -> (solve (n-1) a c b) :: (a,b) :: (solve (n-1) c b a) in
solve m A B C
Run Code Online (Sandbox Code Playgroud)
我收到错误:
文件"induction.ml",第8行,字符8-27:错误:此表达式具有类型'列表但是表达式需要类型'a类型变量'a出现在列表中
我不知道如何解决它.任何人都可以帮我纠正我的错误吗?谢谢
操作员::将元素添加到列表的头部.您正在使用它来连接列表.如果将第一个更改::为列表并置运算符,则代码将编译@.
type peg = A | B | C
type move = peg * peg
let towers (m : int) : (move list) =
let rec solve n a b c = match n with
|0 -> []
|_ -> (solve (n-1) a c b) @ (a,b) :: (solve (n-1) c b a) in
solve m A B C
Run Code Online (Sandbox Code Playgroud)
我不知道结果代码是否正确,但我希望这会让你再次前进.