4

在 Scala 中编写简单的递归函数时,我不断收到此错误。我错过了什么?

scala> def count(n1:Int, n1:Int) : List[Int] = (n1 < n2) ? List() : List(n1, count((n1 - 1), n2))
<console>:1: error: ';' expected but '(' found.
   def count(n1:Int, n1:Int) : List[Int] = (n1 < n2) ? List() : List(n1, count((n1 - 1), n2))
4

2 回答 2

6

在 Scala 中,三元运算符是if. 所以,?and:可以替换为通常的ifelse关键字。

另外,在哪里n2定义?我会count这样猜测def count(n1:Int, n2:Int) : List[Int] = ...

于 2013-01-17T07:04:32.463 回答
1

这行得通!

def count(n1:Int, n2:Int) : List[Int] = if (n1 < n2) List() else n1 :: count((n1 - 1), n2))

更改count(n1:Int, n1:Int)count(n1:Int,n2)其余的是添加一个if else子句而不是三元运算符。

执行此操作的类似代码是def count(n1:Int, n2:Int) = (n1 to n2).reverse

于 2013-01-17T12:14:03.270 回答