私は現在、パスカルの三角形の行シーケンスを見つけることに取り組んでいます。行番号を入力し、その行までの一連の番号をリストに出力したかったのです。たとえば(Pascal 4)
、結果が得られ(1 1 1 1 2 1 1 3 3 1)
ます。
私が見つけたアルゴリズムを使用しようとしています。アルゴリズム自体は次のとおりです。
V c = V c-1 * ((r - c)/c)
rとcは行と列で、V 0 =1 とします。このアルゴリズムは、ウィキペディアのページの「計算と個々の行または対角線」というタイトルのセクションで具体的に見つけることができます。
これが私がこれまでに持っているコードです:
(define pascal n)
(cond((zero? n) '())
((positive? n) (* pascal (- n 1) (/ (- n c)c))))
私はそれがほとんど何もないことを知っていますが、列の値を組み込むためにalet
または aを使用して関数のスコープを見つけようとするのに苦労してきました。lambda
さらに、私は再帰にも苦労しています。ベースケースを確立する方法と次のステップに進む方法がよくわかりません。基本的に、私はどこでもかなり迷子になっています。これがあまり示されていないことはわかっていますが、正しい方向への一歩は大歓迎です。