我写了一个递归括号平衡函数,代码中似乎没有任何错误,但是当我运行它时,我得到了很多错误。
我用这样的调用编写了函数:
if(balance("blarg(arg)".toList)) println("true!") else println("false")
和这样的定义:
def balance(chars: List[Char]): Boolean ={
implicit class MutableInt(var value: Int)
{
def inc() = { value+=1 }
def dec() = { value-=1 }
}
var stack: Int = 0
def recursbalance(chars: List[Char], stack: Int): Boolean=
{
if ((chars.head: Char) == "(".toList) stack.inc()
else if ((chars.head: Char) == ")".toList) stack.dec()
if (stack<0) false
if (chars.isEmpty: Boolean) if (stack == 0) true else false
recursbalance(chars.tail: List[Char], stack: Int)
}
recursbalance(chars: List[Char], stack: Int)
}
我收到这些错误:
Exception in thread "main" java.util.NoSuchElementException: head of empty list
at scala.collection.immutable.Nil$.head(List.scala:337)
at scala.collection.immutable.Nil$.head(List.scala:334)
at recfun.Main$.recursbalance$1(Main.scala:45)
at recfun.Main$.balance(Main.scala:55)
at recfun.Main$.main(Main.scala:16)
at recfun.Main.main(Main.scala)
我该如何解决?抱歉,我是 Scala 新手。
我尝试用这个替换我的递归调用:
if (chars.isEmpty: Boolean) {
if (stack == 0) true else false
}
else
recursbalance(chars.tail: List[Char], stack: Int)
但我仍然得到了所有的错误..