6

私は(HWではなく)自分でプログラミングについて読んでいます。1つの演習では、パスカルの三角形をRでプログラミングしました。最初のアイデアは、リストを作成してから追加することでしたが、うまくいきませんでした。それから、ベクトルから始めて、最後にそれからリストを作成することを考えました。それから、マトリックスを作成し、最後にそれからリストを作成することを考えました。

これにアプローチする方法がわからない。

ヒントはありますか?

ありがとう

4

2 に答える 2

10

ロゼッタコードには1つの解決策があります:

pascalTriangle <- function(h) {
  for(i in 0:(h-1)) {
    s <- ""
    for(k in 0:(h-i)) s <- paste(s, "  ", sep="")
    for(j in 0:i) {
      s <- paste(s, sprintf("%3d ", choose(i, j)), sep="")
    }
    print(s)
  }
}

自分で開発する場合は、これをリストに格納します。これは、可変長の行を処理するための最も自然なデータ構造だからです。ただし、その決定を行う前に、ユースケースを明確にする必要があります。データが生成された後、データの分析を行うつもりですか?

編集:

これは、ループを減らして結果をリストとして保存するように書き直されたRosettaソリューションです。

pascalTriangle <- function(h) {
  lapply(0:h, function(i) choose(i, 0:i))
}
于 2010-04-13T19:25:40.747 に答える
3

パスカルの三角形のプロパティを使用する:

x <- 1
print(x)
for (i in 1:10) { x <- c(0, x) + c(x, 0); print(x) }

このコードは非常に高速だと思います。

于 2016-01-23T09:40:52.457 に答える