scala杨辉三角输出
时间: 2024-08-16 14:04:20 浏览: 31
Scala中的杨辉三角是一个经典的动态规划问题,它通常用于展示组合数的计算。这个三角形每一行表示的是从0到当前行数的所有组合的数量,第一个元素总是1。在Scala中,你可以使用递归或者迭代的方式来生成并打印杨辉三角。下面是一个简单的递归函数示例:
```scala
def pascalTriangle(n: Int): List[List[Int]] = {
if (n <= 0) Nil
else {
val row = List.fill(n + 1)(0)
row(0), row(n) = 1, 1
row.tail.zip(row.drop(1)).map { case (a, b) => a + b }.toList :: pascalTriangle(n - 1)
}
}
def printPascalTriangle(n: Int): Unit = {
pascalTriangle(n).foreach(row => println(row.mkString(" ")))
}
printPascalTriangle(5) // 输出前5行的杨辉三角
```
当你运行`printPascalTriangle(5)`,你会看到前五行的杨辉三角数组列出来。
相关问题
scala杨辉三角代码
以下是Scala实现的杨辉三角代码:
```scala
object YangHuiTriangle {
def main(args: Array[String]) {
val n = 6 // 定义行数为6
var arr = Array.ofDim[Int](n, n) // 定义n*n的二维数组
for (i <- 0 until n) {
// 第一列和对角线的值为1
arr(i)(0) = 1
arr(i)(i) = 1
for (j <- 1 until i) {
// 每个元素等于上一行前后两个元素之和
arr(i)(j) = arr(i-1)(j-1) + arr(i-1)(j)
}
}
// 输出杨辉三角
for (i <- 0 until n) {
for (j <- 0 to i) {
print(arr(i)(j) + " ")
}
println()
}
}
}
```
运行结果:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
```
scala实现杨辉三角
以下是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,因此不需要处理最左侧的元素)。这样可以生成下一行的数字,我们将其添加到列表中并返回。