网易首页 > 网易号 > 正文 申请入驻

使用嵌套循环处理复杂模式生成

0
分享至

使用嵌套循环处理复杂模式生成

嵌套循环是生成复杂图案和模式的理想工具,特别是在需要控制行、列或多个维度的输出时。下面介绍如何使用嵌套循环生成各种复杂模式。

1. 基础三角形模式

直角三角形(左对齐)

php

$rows = 5;

for ($i = 1; $i <= $rows; $i++) {

for ($j = 1; $j <= $i; $j++) {

echo "* ";

echo "\n";

输出:

倒直角三角形

php

$rows = 5;

for ($i = $rows; $i >= 1; $i--) {

for ($j = 1; $j <= $i; $j++) {

echo "* ";

echo "\n";

输出:

2. 金字塔和菱形模式

金字塔模式

php

$rows = 5;

for ($i = 1; $i <= $rows; $i++) {

// 打印空格

for ($k = $rows; $k > $i; $k--) {

echo " ";

// 打印星号

for ($j = 1; $j <= (2 * $i - 1); $j++) {

echo "*";

echo "\n";

输出:

钻石形状

php

$n = 5;

// 上半部分

for ($i = 1; $i <= $n; $i++) {

for ($j = $n; $j > $i; $j--) echo " ";

for ($k = 1; $k < 2 * $i; $k++) echo "*";

echo "\n";

// 下半部分

for ($i = $n - 1; $i >= 1; $i--) {

for ($j = $n; $j > $i; $j--) echo " ";

for ($k = 1; $k < 2 * $i; $k++) echo "*";

echo "\n";

输出:

3. 数字和字母模式

数字金字塔

php

$rows = 5;

for ($i = 1; $i <= $rows; $i++) {

for ($k = $rows; $k > $i; $k--) echo " ";

for ($j = 1; $j <= $i; $j++) echo $j;

for ($j = $i - 1; $j >= 1; $j--) echo $j;

echo "\n";

输出:

1

121

字母金字塔

php

$rows = 5;

$char = 'A';

for ($i = 1; $i <= $rows; $i++) {

for ($k = $rows; $k > $i; $k--) echo " ";

for ($j = 1; $j <= $i; $j++) echo $char++;

$char--;

for ($j = 1; $j < $i; $j++) echo --$char;

$char = 'A';

echo "\n";

/*输出:

A

ABA

ABCBA

ABCDCBA

ABCDEDCBA

4. 复杂组合模式

棋盘模式

php

$size = 8;

for ($i = 0; $i < $size; $i++) {

for ($j = 0; $j < $size; $j++) {

echo ($i + $j) % 2 == 0 ? "■ " : "□ ";

echo "\n";

输出:

螺旋矩阵

php

$n = 5;

$matrix = array_fill(0, $n, array_fill(0, $n, 0));

$value = 1;

$top = 0; $bottom = $n - 1;

$left = 0; $right = $n - 1;

while ($top <= $bottom && $left <= $right) {

// 从左到右填充顶部行

for ($i = $left; $i <= $right; $i++) $matrix[$top][$i] = $value++;

$top++;

// 从上到下填充右侧列

for ($i = $top; $i <= $bottom; $i++) $matrix[$i][$right] = $value++;

$right--;

// 从右到左填充底部行

if ($top <= $bottom) {

for ($i = $right; $i >= $left; $i--) $matrix[$bottom][$i] = $value++;

$bottom--;

// 从下到上填充左侧列

if ($left <= $right) {

for ($i = $bottom; $i >= $top; $i--) $matrix[$i][$left] = $value++;

$left++;

// 打印螺旋矩阵

for ($i = 0; $i < $n; $i++) {

for ($j = 0; $j < $n; $j++) {

printf("%2d ", $matrix[$i][$j]);

echo "\n";

输出:

1 2 3 4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

5. 高级模式技巧

使用函数生成模式

php

function printPattern($rows, $patternFn) {

for ($i = 1; $i <= $rows; $i++) {

for ($j = 1; $j <= $rows; $j++) {

echo $patternFn($i, $j, $rows) . " ";

echo "\n";

// 圆形模式

printPattern(9, function($i, $j, $n) {

$mid = ($n + 1) / 2;

$distance = sqrt(($i - $mid)**2 + ($j - $mid)**2);

return $distance < $mid ? "■" : " ";

动态模式生成

php

$patterns = [

'triangle' => function($rows) {

for ($i = 1; $i <= $rows; $i++) {

for ($j = 1; $j <= $i; $j++) echo "* ";

echo "\n";

},

'square' => function($rows) {

for ($i = 1; $i <= $rows; $i++) {

for ($j = 1; $j <= $rows; $j++) echo "* ";

echo "\n";

},

'diagonal' => function($rows) {

for ($i = 1; $i <= $rows; $i++) {

for ($j = 1; $j <= $rows; $j++) echo $i == $j ? "* " : " ";

echo "\n";

$patterns['triangle'](5);

echo "\n";

$patterns['square'](5);

echo "\n";

$patterns['diagonal'](5);

最佳实践

  1. 分解问题:将复杂模式分解为行和列的简单模式
  2. 使用辅助函数:对于特别复杂的模式,创建辅助函数计算每个位置的值
  3. 预计算值:对于需要复杂计算的模式,考虑预计算部分值
  4. 可视化调试:在开发过程中,添加调试输出显示当前行列索引
  5. 优化循环范围:尽量减少内层循环的计算量

嵌套循环提供了强大的模式生成能力,通过创造性地控制内外层循环的关系,可以生成几乎任何想象的到的二维模式。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
都是不怕死,为什么美军能够吊打日军却对志愿军无可奈何?

都是不怕死,为什么美军能够吊打日军却对志愿军无可奈何?

小杨历史
2025-11-09 12:52:29
这一次当众落泪的陈芋汐,给全红婵提了个醒,原来周继红说的没错

这一次当众落泪的陈芋汐,给全红婵提了个醒,原来周继红说的没错

小鬼头体育
2025-11-08 01:47:10
三角恋?陷害曾医生和副院长的人遭曝光?是一个叫汤淑珍的女人

三角恋?陷害曾医生和副院长的人遭曝光?是一个叫汤淑珍的女人

汉史趣闻
2025-11-11 19:40:24
全运会爆大冷!世界冠军1-4出局,林诗栋剃光头,男单16强落位

全运会爆大冷!世界冠军1-4出局,林诗栋剃光头,男单16强落位

知轩体育
2025-11-11 20:32:59
副院长与曾主任合照被挖出,网友:果然有缘

副院长与曾主任合照被挖出,网友:果然有缘

深度报
2025-11-11 21:42:52
康宁汉姆46+12+11无缘今日最佳球员!因为文班38+12+5+5历史首人

康宁汉姆46+12+11无缘今日最佳球员!因为文班38+12+5+5历史首人

Tracy的篮球博物馆
2025-11-11 13:34:24
190cm法国模特福德莉奇,黑丝长腿气场全开,富美身材引领潮流?

190cm法国模特福德莉奇,黑丝长腿气场全开,富美身材引领潮流?

娱乐领航家
2025-11-11 19:00:03
朱俊龙:对面战术我都知道不好意思说,下次还是把我也叫上吧

朱俊龙:对面战术我都知道不好意思说,下次还是把我也叫上吧

懂球帝
2025-11-11 19:05:15
四川77-80浙江无缘决赛 球员评价:2人满分,1人及格,6人崩盘

四川77-80浙江无缘决赛 球员评价:2人满分,1人及格,6人崩盘

篮球资讯达人
2025-11-11 17:55:59
大难临头各自飞?"手表风波"仅5月,玲花官宣好消息,曾毅被抛弃

大难临头各自飞?"手表风波"仅5月,玲花官宣好消息,曾毅被抛弃

素衣读史
2025-11-10 16:20:13
别再可怜李咏了!离世7年后医生揭秘离世真相,难怪选择葬身美国

别再可怜李咏了!离世7年后医生揭秘离世真相,难怪选择葬身美国

喜欢历史的阿繁
2025-11-08 15:09:21
哈登尽力了!35+10+11难救主,快船惜败老鹰,替补奇兵轰8记三分

哈登尽力了!35+10+11难救主,快船惜败老鹰,替补奇兵轰8记三分

湖人崛起
2025-11-11 14:02:14
西部排名又乱了:快船爆冷连败,马刺高歌猛进,6队排名互换

西部排名又乱了:快船爆冷连败,马刺高歌猛进,6队排名互换

篮球大视野
2025-11-11 17:50:29
004航母动力系统有了新突破!央视报道了:核反应堆将开始运行?

004航母动力系统有了新突破!央视报道了:核反应堆将开始运行?

李博世财经
2025-11-11 13:58:31
女孩身高2.26米,貌美如花,妈妈却天天发愁:比门还高,没人敢追

女孩身高2.26米,貌美如花,妈妈却天天发愁:比门还高,没人敢追

黔乡小姊妹
2025-11-11 13:16:02
10个亿说没就没!从网红白酒到“狗都不喝”,年轻人为啥不买账?

10个亿说没就没!从网红白酒到“狗都不喝”,年轻人为啥不买账?

诗意世界
2025-11-10 20:35:04
山姆始料未及,阿里味被抵制,风向变了,中产想要的,阿里给不了

山姆始料未及,阿里味被抵制,风向变了,中产想要的,阿里给不了

王新喜
2025-11-10 11:36:16
中方将向菲律宾提供现汇和紧急物资援助,台风“海鸥”已致菲律宾200多人死亡

中方将向菲律宾提供现汇和紧急物资援助,台风“海鸥”已致菲律宾200多人死亡

鲁中晨报
2025-11-11 19:51:02
告别月月跑医院!2026年1月慢病开药延至3个月,省钱技巧全在这

告别月月跑医院!2026年1月慢病开药延至3个月,省钱技巧全在这

牛锅巴小钒
2025-11-11 03:25:51
全澳炸锅! 加拿大一刀砍印度签证, 全送澳洲! 大批澳人抵制印度移民! 中国网友也崩溃了...

全澳炸锅! 加拿大一刀砍印度签证, 全送澳洲! 大批澳人抵制印度移民! 中国网友也崩溃了...

澳洲红领巾
2025-11-10 14:42:00
2025-11-11 23:12:49
建邺区生态科技岛人工智能商会
建邺区生态科技岛人工智能商会
南京市建邺区生态科技岛人工智能行业商会
189文章数 0关注度
往期回顾 全部

科技要闻

苹果新品惨败,产线拆光、二代搁浅!

头条要闻

上海阿姨存了近30年的钱提不出傻眼 银行:找不到底根

头条要闻

上海阿姨存了近30年的钱提不出傻眼 银行:找不到底根

体育要闻

一个14岁的小男孩,决定了谁能晋级世界杯

娱乐要闻

古二曝秦雯多次炫耀袭警经历

财经要闻

南昌三瑞智能IPO:委外代工模式存疑

汽车要闻

盈利"大考",汽车智能化企业的中场战事

态度原创

家居
房产
艺术
游戏
军事航空

家居要闻

国美学子 打造筑梦空间

房产要闻

海口湾,1300亩巨无霸地块登场!

艺术要闻

田英章日常书信曝光,字迹开阔惊艳人心!

陶德:《星空》是我做过最好的游戏之一 枪械手感很赞

军事要闻

空军发布重磅视频 多款新型战机亮相

无障碍浏览 进入关怀版