任何人都可以帮助我吗? 我需要创建函数«lazymerge»,它从两个排序的惰性列表生成一个新的排序列表。你需要使用流。 例如:[1; 3; 5; 7; 9; 11]和[2; 4; 6; 8]给你[1; 2; 3; 4; 5; 6; 7; 8; 9; 11]
我尝试了一切:( 此外,它必须以功能的方式完成。
答案 0 :(得分:2)
您需要比较两个流的当前头部,并使用较小的一个作为每次迭代的最终流的当前头部。
val intStream1 = 1 #:: 5 #:: Stream(10)
val intStream2 = 2 #:: 4 #:: Stream(12)
def sortedMerge(stream1: Stream[Int], stream2: Stream[Int]): Stream[Int] = (stream1.isEmpty, stream2.isEmpty) match {
case (false, false) => (stream1.head <= stream2.head) match {
case true => stream1.head #:: sortedMerge(stream1.tail, stream2)
case false => stream2.head #:: sortedMerge(stream1, stream2.tail)
}
case (false, true) => stream1
case (true, false) => stream2
case (true, true) => Stream.empty[Int]
}
}
val sortedStream = sortedMerge(intStream1, intStream2)