You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 20:03:24