0

0

如何打印首尾元素不同的递增数字三角形图案

花韻仙語

花韻仙語

发布时间:2026-01-07 14:00:11

|

152人浏览过

|

来源于php中文网

原创

如何打印首尾元素不同的递增数字三角形图案

本文详解如何用嵌套循环生成每行起始与结束数字不相同的三角形数字图案,重点在于正确管理累加变量的作用域与更新时机,避免全局累加干扰行间独立性。

要实现如下目标图案:

1
3 5
5 8 11
7 11 15 19
9 14 19 24 29

关键在于:每行应拥有独立的起始值,并在该行内以固定步长(此处为当前 k 值)递增,且 k 在每行开始前自增一次,作为该行的“公差”。

? 错误根源分析

原代码中 p 是全局累加变量(p += k 跨行持续累加),且 k++ 发生在内层循环之后,导致:

  • 行间 p 值污染(如第2行从 p=1 继续加,而非重置);
  • k 的更新时机与行号错位,无法作为当行统一增量。

✅ 正确解法:行内局部初始化 + 行首预更新

核心策略是:

  • 将 p 声明为内层循环外、j 循环前的局部变量,确保每行独立初始化;
  • 在进入每行前,先更新 k(即 k++),再用其旧值(k-1)或新值设定该行起始点——本例采用 p = k++,即用当前 k 初始化 p,再立即递增 k,使 k 成为该行后续每次累加的步长。
int k = 0;
for (int i = 1; i <= 5; i++) {
    int p = k++; // ✅ 每行开始:p 取当前 k 值,k 自增为下一行步长
    for (int j = 1; j <= i; j++) {
        p += k; // ✅ 行内每次加的是「更新后的 k」(即本行公差)
        System.out.print(p + " ");
    }
    System.out.println();
}

? 执行过程简析(以前三行为例):

  • i=1:k=0 → p = 0, k 变为 1 → p += 1 → p=1 → 输出 1
  • i=2:k=1 → p = 1, k 变为 2 → p+=2→3;p+=2→5 → 输出 3 5
  • i=3:k=2 → p = 2, k 变为 3 → p+=3→5;p+=3→8;p+=3→11 → 输出 5 8 11

完全匹配期望输出。

Friday AI
Friday AI

国内团队推出的智能AI写作工具

下载

? 进阶优化:对齐格式化输出

为提升可读性,推荐使用 printf 控制列宽,避免因数字位数增长导致错位:

int k = 0;
for (int i = 1; i <= 5; i++) {
    int p = k++;
    for (int j = 1; j <= i; j++) {
        p += k;
        System.out.printf("%-4d", p); // 左对齐,每数占4字符宽
    }
    System.out.println();
}

输出效果更整齐:

1   
3   5   
5   8   11  
7   11  15  19  
9   14  19  24  29  

⚠️ 注意事项总结

  • ❌ 避免将累加变量(如 p)声明在最外层循环外,否则会跨行累积,破坏行独立性;
  • ✅ k 的更新必须在每行开始时完成(如 p = k++),确保其作为该行增量基准的语义清晰;
  • ✅ 若需调整起始值或步长规律,只需修改 p 的初始赋值逻辑(例如 p = 2*k - 1 可让首项为奇数序列);
  • ? 调试时建议在关键位置添加 System.out.println("i="+i+", k="+k+", p="+p) 辅助验证状态流转。

掌握这一“行级状态隔离”思想,即可灵活构造各类非线性、分段递增的图案,是循环控制进阶的重要实践。

相关文章

全能打印神器
全能打印神器

全能打印神器是一款非常好用的打印软件,可以在电脑、手机、平板电脑等设备上使用。支持无线打印和云打印,操作非常简单,使用起来也非常方便,有需要的小伙伴快来保存下载体验吧!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
printf用法大全
printf用法大全

php中文网为大家提供printf用法大全,以及其他printf函数的相关文章、相关下载资源以及各种相关课程,供大家免费下载体验。

72

2023.06.20

fprintf和printf的区别
fprintf和printf的区别

fprintf和printf的区别在于输出的目标不同,printf输出到标准输出流,而fprintf输出到指定的文件流。根据需要选择合适的函数来进行输出操作。更多关于fprintf和printf的相关文章详情请看本专题下面的文章。php中文网欢迎大家前来学习。

279

2023.11.28

java学习网站推荐汇总
java学习网站推荐汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

3

2026.01.08

java学习网站汇总
java学习网站汇总

本专题整合了java学习网站相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.01.08

正则表达式 删除
正则表达式 删除

本专题整合了正则表达式删除教程大全,阅读专题下面的文章了解更多详细教程。

19

2026.01.08

java 元空间 永久代
java 元空间 永久代

本专题整合了java中元空间和永久代的区别,阅读专题下面的文章了解更多详细内容。

3

2026.01.08

java 永久代和元空间
java 永久代和元空间

本专题整合了java中元空间和永久代的区别,阅读专题下面的文章了解更多详细内容。

0

2026.01.08

java成品网站源码资源大全
java成品网站源码资源大全

本专题整合了java成品网站源码相关内容,阅读专题下面的文章了解更多详细内容。

9

2026.01.08

java过滤器教程大全
java过滤器教程大全

本专题整合了java过滤器相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.08

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 2.9万人学习

Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

NumPy 教程
NumPy 教程

共44课时 | 2.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号