java list range,如何从Range创建List

我是Scala的新手,刚刚开始学习,所以这是一个基本的初学者问题 .

我尝试实现Sieve of Eratosthenes算法 . 这是我到目前为止所得到的:

def sieve_core(cross: Int, lst: Seq[Int]): List[Int] = {

val crossed = lst.filter(_ % cross != 0)

crossed match {

case a :: rest => cross :: sieve_core(a, crossed)

case _ => cross :: Nil

}

}

def sieve(max: Int): List[Int] = {

sieve_core(2, (2 to max))

}

println(sieve(100))

结果是:

List(2)

据我所知, case _ => cross :: Nil 在 sieve_core 的第一次迭代中匹配,这意味着 crossed 不是List的实例 .

我将 lst 参数类型更改为 List[Int] ,现在代码将无法编译并显示错误:

(fragment of Problem3.scala):24: error: type mismatch;

found : Range.Inclusive

required: List[Int]

sieve_core(2, (2 to max))

^

显然 Range 不是 List .

问题:如何将Range转换为List?或者我的代码是一个更大的问题,我在某个地方做了一些不好的假设?

任何帮助赞赏 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值