逐步take(len/n)不就可以了么。。。
Welcome to Scala 3.3.0 (17.0.5, Java Java HotSpot(TM) 64-Bit Server VM).
Type in expressions for evaluation. Or try :help.
scala> def split[T](xs: List[T], n: Int): List[List[T]] = n match
| case 0 => if xs.isEmpty then Nil else throw IllegalStateException()
| case 1 => List(xs)
| case _ => xs.take(xs.size / n) :: split(xs.drop(xs.size / n), n-1)
|
def split[T](xs: List[T], n: Int): List[List[T]]
scala> split(List.range(0, 8), 5)
val res0: List[List[Int]] = List(List(0), List(1), List(2, 3), List(4, 5), List(6, 7))
scala> split(List.range(0, 10), 5)
val res1: List[List[Int]] = List(List(0, 1), List(2, 3), List(4, 5), List(6, 7), List(8, 9))
【 在 RaZRo 的大作中提到: 】
: 一开始觉得挺简单的,
: 逐步take(len/n)就好了,但是len=8,n=5,会得到1,1,1,1,4,
: 如果逐步take(len/n+1) , 会得到2,2,2,2,0。
: ...................
--
FROM 180.164.94.*