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

Swift中特定数字图案打印求助:现有代码无法正常运行

Swift 打印指定数字图案问题解决

需求图案

需要打印的数字图案:

N=5                                N=4
15                                 10   
14   7                             9   4
13   8   6                         8   5   3
12   9   5  2                      7   6   2   1
11   10  4  3  1

你的代码问题

你写的代码存在语法和逻辑错误:

  • Swift 不支持for n in 15..1, n--这种循环写法,倒序循环需要用stride或者reversed()方法
  • print函数参数拼写错误(separartor应为separator),且参数用法不符合Swift规范
  • 代码逻辑没有贴合图案的数字规律,无法生成目标样式

正确实现代码

先分析图案规律:

  • 初始数字是前N个自然数的总和:total = N*(N+1)/2
  • 奇数列从上到下数字递减,偶数列从上到下递增
  • 第col列仅在row≥col的行中出现,每行包含row个数字

以下是通用实现函数,支持任意N:

func printNumberPattern(for N: Int) {
    let total = N * (N + 1) / 2
    for row in 1...N {
        var lineComponents = [String]()
        for col in 1...row {
            // 计算前col-1列的总数字个数
            let sumPrev = (col - 1) * (2 * N - (col - 2)) / 2
            let number: Int
            if col % 2 == 1 {
                // 奇数列:当前行数字 = 列起始数字 - 行偏移量
                number = (total - sumPrev) - (row - col)
            } else {
                // 偶数列:当前行数字 = total - 前序总数 - N + 当前行号
                number = total - sumPrev - N + row
            }
            // 格式化数字保证对齐
            lineComponents.append(String(format: "%2d", number))
        }
        // 用三个空格分隔数字并打印
        print(lineComponents.joined(separator: "   "))
    }
}

// 测试N=5和N=4
print("N=5")
printNumberPattern(for: 5)
print("\nN=4")
printNumberPattern(for: 4)

运行结果

执行代码后输出:

N=5
 15
 14    7
 13    8    6
 12    9    5    2
 11   10    4    3    1

N=4
 10
  9    4
  8    5    3
  7    6    2    1

内容的提问来源于stack exchange,提问作者Ninja G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 18:45:13