如何用Go语言生成符合指定规律的数字金字塔图案?
修改Go代码实现目标数字金字塔图案
目标图案:
1 2 2 3 4 3 4 5 5 4 5 6 7 6 5
你的现有代码已经实现了正确的缩进结构,但数字部分未遵循目标图案的规律。先明确目标图案的数字规则:
- 第
i行(从1开始计数)包含i个数字 - 对于该行的第
j个位置(j从0开始计数),数字计算公式为:i + min(j, i-1-j)
简单来说:前半段数字从i开始逐步递增,到中间位置达到最大值后,后半段逐步递减;偶数行的中间会有两个相同的最大值。
修改后的代码如下:
package main import ( "fmt" "math" ) func main() { for i := 1; i <= 5; i++ { // 打印前置空格 for j := i; j <= 5; j++ { fmt.Print(" ") } // 打印每行的数字 for j := 0; j < i; j++ { num := i + int(math.Min(float64(j), float64(i-1-j))) fmt.Printf("%d ", num) } fmt.Println() } }
如果不想引入math包,也可以手动实现最小值判断:
package main import "fmt" func main() { for i := 1; i <= 5; i++ { for j := i; j <= 5; j++ { fmt.Print(" ") } for j := 0; j < i; j++ { minVal := j if i-1-j < minVal { minVal = i-1-j } num := i + minVal fmt.Printf("%d ", num) } fmt.Println() } }
运行上述代码后,输出将完全匹配目标图案。
内容的提问来源于stack exchange,提问作者Benguin
相关产品推荐
相关产品推荐

