我想通过SML运行Hanoi算法,所以我使用了以下类似C的代码:
fun Hanoi 1 source dest by = print ("Move the plate from"^source^"to"^dest^"/n")
| n source dest by = Hanoi n-1 source by dest
print ("Move the plate from"^^source^^"to"^^dest^^"/n")
Hanoi n-1 by dest source
这段代码出了问题。我的猜测是,由于它有多个指令,我没有正确编写算法的n个案例。 无论如何,我真的很感谢你的帮助。 如果可以,请理解我是ML中的一个完全业余的编码器,这意味着我对它的工作方式知之甚少。
答案 0 :(得分:0)
ML中没有“指令”,只有表达式。分号运算符允许按顺序评估多个表达式。这应该编译:
fun hanoi 1 source dest by =
print ("Move the plate from"^source^"to"^dest^"/n")
| hanoi n source dest by =
(hanoi (n-1) source by dest;
print ("Move the plate from"^source^"to"^dest^"/n");
hanoi (n-1) by dest source)
请注意,您需要使用分号括起来。你还需要围绕n-1
的parens,因为中缀运算符的优先级低于函数应用程序。