6

我正在阅读自己(不是为硬件)关于编程的内容,其中一个练习涉及在 R 中编程 Pascal 的三角形。我的第一个想法是制作一个列表,然后将内容附加到它上面,但效果不太好。然后我想从一个向量开始,然后在最后列出一个列表。然后我想到了制作一个矩阵,并在最后列出一个列表。

甚至不知道用哪种方法来解决这个问题。

有什么提示吗?

谢谢

4

2 回答 2

10

Rosetta Code有一个解决方案:

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 回答