我正在尝试学习 scala 并正在做作业,但无法弄清楚以下内容......
所以,问题是递归地确定括号是否平衡......递归地。所以这是我的一个工作解决方案..
def balance(chars: List[Char]): Boolean = {
def iterate(chars: List[Char], sum:Int):Int = {
if(chars.isEmpty || sum<0) sum
else if(chars.head == '(') iterate(chars.tail ,sum+1)
else if(chars.head == ')') iterate(chars.tail,sum-1)
else iterate(chars.tail, sum)
}
iterate(chars,0) == 0
}
但是如果将我的代码更改为以下
def balance(chars: List[Char]): Boolean = {
def iterate(chars: List[Char], sum:Int):Int = {
if(chars.isEmpty || sum<0) sum
else if(chars.head == "(") iterate(chars.tail ,sum+1) //NOTE double quotes
else if(chars.head == ")") iterate(chars.tail,sum-1) //NOTE double quotes
else iterate(chars.tail, sum)
}
iterate(chars,0) == 0
}
这总是返回真......
为什么?
//test with
val s1 = ":-)"
println(balance(s1.toList))