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

如何识别打印循环的规律?编程考试三角形打印解题求助

识别打印图形类循环规律的实用技巧

针对你在三角形打印问题中遗漏右侧斜边条件的情况,分享几个能帮你快速识别行列规律的实用方法:

  • 手动绘制坐标对照表
    拿目标图形的小尺寸案例(比如width=5),把每个位置的行号r、列号c标出来,再标记哪些位置需要输出*:

    r=1: c1(*) c2(*) c3(*) c4(*) c5(*) → 全*(对应r==1)
    r=2: c1(*) c2(_) c3(_) c4(_) c5(*) → *在c=r和c=width - r +1的位置
    r=3: c1(*) c2(_) c3(*) c4(_) c5(*) → *在c=r、c=width - r +1的位置
    

    把所有*对应的r和c的数学关系列出来,就能直接发现除了c==r,还有r+c == width+1(等价于c=width - r +1)的规律。

  • 拆解图形的边界特征
    打印图形的*基本都是图形的边界或填充区域,先把目标图形的边界拆解开:

    • 顶部边界:第一行所有列都是*,对应r==1
    • 左侧斜边:每行r对应的列c等于行号,即c==r
    • 右侧斜边:每行r对应的列c满足r+c = width+1,也就是从右侧数第r个位置
      把每个边界的行列条件单独梳理出来,再组合成if判断,就不会遗漏。
  • 用小数值测试找共性
    别上来就写代码,先用width=3、width=5这种小数值手动写出每一行的输出,对比每行中*的位置和r、c的关系。比如width=3时:

    r=1: ***
    r=2: * *
    

    盯着*的位置计算r和c的数值关系,很快就能总结出规律。

  • 逐步迭代修正代码
    先写出你能确定的条件(比如r==1 || c==r),运行代码看输出,对比目标图形找出缺失的部分。比如你原来的代码运行后,第二行只有左侧一个*,右侧缺了,这时就盯着右侧该出现*的位置,计算它的r和c的关系,就能快速发现r+c == width+1这个条件。

另外,你的代码里还有一个小错误:用了System.out.println("*"),这会导致每个字符单独占一行,应该用System.out.print()来保证同一行的字符连续输出。修正后的代码如下:

public static void drawTriangle(int width)
{
    for (int r = 1; r <= (width + 1) / 2; r++)
    {
        for (int c = 1; c <= width; c++)
        {
            if (r == 1 || c == r || r + c == width + 1)
            {
                System.out.print("*");
            } else {
                System.out.print("_");
            }
        }
        System.out.println();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:05:26