Golang程序打印左半Pascal三角形
Pascal三角形,也称杨辉三角,是一个非常有趣的数学形式。它是按照以下规则构造的:
第一行仅为数字1;
其它行的端点与中间数字均为1;
每个数等于它的上一行左侧数字与右侧数字之和。
左半Pascal三角形,指的是只展示三角形左侧的部分,形如:
1
1 1
1 2 1
1 3 3
1 4
1
接下来,我们将使用Golang编写程序,来打印左半Pascal三角形。
实现步骤
为了让程序更具可读性和可维护性,我们将实现以下步骤:
- 首先,我们需要定义一个包含指定行数的二维数组;
- 然后,我们将使用两个单独的循环来填充三角形的数字;
- 最后,我们将使用另一个循环来按照格式输出左半三角形。
那么代码就是这样的:
package main
import "fmt"
func main() {
rows := 6
triangle := make([][]int, rows)
for i := range triangle {
triangle[i] = make([]int, i+1)
for j := range triangle[i] {
if j == 0 || j == i {
triangle[i][j] = 1
} else if j != 0 {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
}
}
}
for i := 0; i < rows; i++ {
for j := 0; j <= i; j++ {
fmt.Print(triangle[i][j], " ")
}
fmt.Println()
}
}
让我们逐个解释:
首先,我们定义变量rows,它用于指定三角形中行的数量。
然后,我们定义一个二维数组triangle,该数组包含每一行中的数字。我们使用make函数将每一行设置为一个长度等于当前行数的空数组。
rows := 6
triangle := make([][]int, rows)
for i := range triangle {
triangle[i] = make([]int, i+1)
}
接下来,我们使用两个嵌套的循环来填充三角形数组。
for i := range triangle {
for j := range triangle[i] {
if j == 0 || j == i {
triangle[i][j] = 1
} else if j != 0 {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
}
}
}
在这里,我们首先检查当前单元格是否是行的最左侧或最右侧。如果是,则将其设置为1。否则,我们将其设置为其上一行中相邻数字的和。
最后,我们使用一个循环来输出左半三角形,使用“0”填充三角形右侧的空格。
for i := 0; i < rows; i++ {
for j := 0; j <= i; j++ {
fmt.Print(triangle[i][j], " ")
}
for k := 0; k < rows-i-1; k++ {
fmt.Print("0 ")
}
fmt.Println()
}
这个循环首先在每行中遍历数字,并在每个数字之间添加一个空格。然后,如果行中还有剩余的空格,我们使用“0”填充它们。
完整代码
完整的Golang程序如下所示:
package main
import "fmt"
func main() {
rows := 6
triangle := make([][]int, rows)
for i := range triangle {
triangle[i] = make([]int, i+1)
}
for i:= range triangle {
for j := range triangle[i] {
if j == 0 || j == i {
triangle[i][j] = 1
} else if j != 0 {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
}
}
}
for i := 0; i < rows; i++ {
for j := 0; j <= i; j++ {
fmt.Print(triangle[i][j], " ")
}
for k := 0; k < rows-i-1; k++ {
fmt.Print("0 ")
}
fmt.Println()
}
}
结论
使用Golang编写程序打印左半Pascal三角形,可以帮助我们更好地了解该数学形式,并为Golang程序员提供了一种有趣的方式来提高他们的编程技能。虽然本文只提供了一个简单的示例,但您可以根据自己的需要进行调整和扩展,以使该程序更加丰富和有用。
极客笔记