【发布时间】:2013-04-08 11:56:28
【问题描述】:
我有以下代码(这是我的课程作业)
def balance(chars: List[Char]): Boolean = {
def innerBalance(chars: List[Char], count: Int): Boolean = {
if (chars.isEmpty) count == 0
if (chars.head == '(') innerBalance(chars.tail, count+1)
if (chars.head == ')') (count > 0) && innerBalance(chars.tail, count-1)
innerBalance(chars.tail, count)
}
innerBalance(chars, 0)
}
据我所知,这与炖菜在Scala way to program bunch of if's 上的回答非常相似 但我不知道为什么声明
if (chars.isEmpty) count == 0
永远是假的。
如果我运行这样的测试
balance("".toList)
它只是抛出异常。
感谢您的帮助。 问候,
【问题讨论】:
-
这不是 scala 的惯用用法。我建议使用
match来减少解决方案的冗长和复杂性。