scala实现杨辉三角
时间: 2023-05-26 09:02:42 浏览: 193
以下是scala实现杨辉三角的代码:
```scala
object PascalTriangle {
def main(args: Array[String]): Unit = {
val numRows = 5
val triangle = generate(numRows)
println(triangle)
}
def generate(numRows: Int): List[List[Int]] = {
if (numRows <= 0) Nil
else if (numRows == 1) List(List(1))
else {
val previousTriangle = generate(numRows - 1)
val previousRow = previousTriangle.last
val newRow = (0 :: previousRow) zip (previousRow :+ 0) map { case (a, b) => a + b }
previousTriangle :+ newRow
}
}
}
```
在这个实现中,我们使用递归来生成杨辉三角。如果 `numRows` 小于等于0,我们返回空列表。如果 `numRows` 等于1,则我们返回一个包含一个1的列表。对于大于1的 `numRows`,我们先生成一个 `numRows-1` 的杨辉三角,然后计算出新的一行,并将其添加到结果列表中。我们对上一行的相邻元素相加,即使最左边和最右边的元素是0(方便起见,我们在第一位添加了一个0,因此不需要处理最左侧的元素)。这样可以生成下一行的数字,我们将其添加到列表中并返回。
阅读全文