打印空心金字塔_Golang实现
*
* *
* *
* *
* *
* *
* * * * * * * * * * * * *
需求:在控制台打印如上图所示的效果图
解题思路:
- 首先简化问题,用嵌套for循环打印出实心金字塔,由题可观察得知,层数与star(星号)数量保持着一定关系(奇数队列),1、3、5、7……2n-1
- 然后,格式化打印效果,即打印制表符(每一行先打印制表符,再打印star)
- 最后,用流程控制if-then-else Statements,将实心改为空心(即金字塔的边界打印star)
func main() {
// 当前行
var i int
// 当前star序号
var j int
// 金字塔层数
var limit int
fmt.Println("请输入金字塔的层数")
_, _ = fmt.Scanln(&limit)
for i = 1; i <= limit; i++ {
// 制表符
printTable(i, limit)
for j = 1; j <= 2*i-1; j++ {
// 边界起点star,边界终点star,最后一行star
if j == 1 || j == 2*i-1 || i == limit {
// star
fmt.Printf("*\t")
} else {
// 空心
fmt.Printf(" \t")
}
}
fmt.Println()
}
}
func printTable(row int, limit int) {
// 例如一个五层的金字塔,第一行需要4个制表符,第二行需要3个制表符……
// 规律,当前行row需要打印的制表符个数 = 金字塔层数limit - 当前行数row
for i := 1; i <= limit-row; i++ {
fmt.Printf("\t")
}
}