【发布时间】:2017-11-20 04:31:49
【问题描述】:
我有一个方法可以帮助我解决骑士之旅。我希望在找到解决方案后立即停止递归,但是它会继续进行。
最后它返回近 20 种不同的解决方案。我在下面添加了我的代码,有人可以指出这里有什么问题吗?
def myRecursion(dimension: Int, solution: Solution) : Option[Solution] = {
if ( dimension * dimension == solution.size) {
println("Stop it now")
Some(solution)
} else {
val movesAvailable = possibleMoves(dimension, solution, solution.head)
val bestm = bestMoves(movesAvailable)
if ( bestm.isDefined ) {
myRecursion(dimension, bestm.get ::: solution)
} else {
movesAvailable.foreach{ x =>
if(myRecursion(dimension, x:: solution).isDefined){
x::solution;
}
}
None
}
}
}
【问题讨论】:
-
@RameshMaharjan 不幸的是,这并没有解决我的问题。一旦solution.size 为1,它就会停止。但是当解决方案包含(维度*维度)元素数时,我试图停止它
-
我的分析错误,维度永远不会增加,但解决方案的大小是。所以它反过来。将维度 * 维度 == solution.size 更改为维度 * 维度
-
@RameshMaharjan 不幸的是,它仍然显示与 "==" 相同的输出
标签: scala recursion knights-tour immutable-collections