すべての素数の怠惰な無限シーケンスを作成しようとすると、クローキングが学習されます。 より効率的なアルゴリズムがあることを知っています。理想的な解決策よりもPOC /レッスンとして、次のことをやっています。前の要素に応じてレイジーシーケンス
(next-prime [2 3 5]) ; result: 7
私の怠惰なシーケンスは、したがって、その後、この関数に自分自身を渡し、結果を取り、にそれを追加する必要があります。
私は素数のシーケンス与えられ、次の素数が何であるかを私に語った、機能を持っています自体。
私の最初の試み:はIllegalArgumentExceptionで
(def lazy-primes
(lazy-cat [2 3 5] (find-next-prime lazy-primes)))
..which結果:からISEQを作成する方法を知ってはいけない:java.lang.Integerの
私の第二の試み:
(def lazy-primes
(lazy-cat [2 3 5] [(find-next-prime lazy-primes)]))
.. 10要素を求められたときに私に[2 3 5 7]が与えられます。
試み3:彼らは動作するはずです(または、少なくとも、前が機能しなかったことを考えると動作するはずです)のような
(def lazy-primes
(lazy-cat [2 3 5]
(conj lazy-primes (find-next-prime lazy-primes))))
(take 10 lazy-primes) ; result: (2 3 5 7 2 3 5 7 2 3)
これらのすべてが見えます。なぜ私はそれぞれのケースで偽の出力を得ているのですか?
興味深いサイトが、あなたは私に私のコードが何をしているかの説明を与えることができますか? – Kricket