저는 스칼라에 대해 매우 새롭기 때문에 범위 [i; j]의 숫자에 대한 소수를 찾아야합니다.스트림을 통해 반복하기
val stream = (i to j).toStream
다음 나는 소수를 찾는 가정이 함수를 호출 : 예외 이유는 무엇입니까 스트림을 출력하기
def findPrimes(s: Stream[Int]): Stream[Int] = {
println("HEAD: " + s.head)
return findPrimes(s.tail)
// s.head #:: findPrimes(s.tail.filter(_ % s.head != 0))
}
내가 당황 스럽네요, 콘솔로를 : 이것은 내가 스트림을 입력하는 방법입니다
Exception in thread "main" java.util.NoSuchElementException: head of empty stream
at scala.collection.immutable.Stream$Empty$.head(Stream.scala:1104)
at scala.collection.immutable.Stream$Empty$.head(Stream.scala:1102)
at com.example.anna.app.HelloWorld$.findPrimes(HelloWorld.scala:43)
STREAM SIZE IS 100
at com.example.anna.app.HelloWorld$.prime(HelloWorld.scala:32)
HEAD: 1
at com.example.anna.app.HelloWorld$.delayedEndpoint$com$example$anna$app$HelloWorld$1(HelloWorld.scala:11)
HEAD: 2
HEAD: 3
at com.example.anna.app.HelloWorld$delayedInit$body.apply(HelloWorld.scala:3)
HEAD: 4
at scala.Function0.apply$mcV$sp(Function0.scala:34)
HEAD: 5
HEAD: 6
at scala.Function0.apply$mcV$sp$(Function0.scala:34)
HEAD: 7
at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
HEAD: 8
HEAD: 9
at scala.App.$anonfun$main$1$adapted(App.scala:76)
HEAD: 10
HEAD: 11
at scala.collection.immutable.List.foreach(List.scala:389)
HEAD: 12
at scala.App.main(App.scala:76)
HEAD: 13
at scala.App.main$(App.scala:74)
HEAD: 14
HEAD: 15
at com.example.anna.app.HelloWorld$.main(HelloWorld.scala:3)
HEAD: 16
at com.example.anna.app.HelloWorld.main(HelloWorld.scala)
HEAD: 17
시작부터 끝까지 17 개의 예외가 없습니다. 또한이 주석 행은 작동하지 않으며 동일한 예외가 발생합니다.
도움이 필요하면 & 조언을 보내 주시면 감사하겠습니다.
을 하지만 어떻게 스트림을 제한하고 그 수를 [i; j]? 경우에 - 나는 100 개의 1 차 소수를 필요로하지 않는다. 나는 범위 내의 모든 소수를 찾아서 n-th로 돌아갈 필요가있다. – alalambda
무한 스트림을 입력하면 모든 경우를 커버 할 수 있습니다. 무한한 물줄기는 실제로 유한합니다. 추가 메모리가 필요하지 않습니다. – pamu