作者:hya641520 | 来源:互联网 | 2024-11-06 10:31
通过使用`for`循环,可以构建一个标准的等腰三角形。具体来说,每层的星号数量为`2*i-1`,而空格的数量则为`(n-i)*2`,其中`n`是总层数,`i`是当前层的索引。通过合理地控制星号和空格的数量,可以确保生成的三角形在视觉上是标准且对称的。例如,对于一个4层的等腰三角形,第一层有1个星号和6个空格,第二层有3个星号和4个空格,依此类推。这种算法不仅简单高效,而且易于实现。
正等腰三角形
/*
层数i 星星数 空格数 循环层i
* 1 1 6
* * * 2 3 4
* * * * * 3 5 2
* * * * * * * 4 7 0
星星数: 2*i-1
空格数: (n-i)*2
*/
$n = 4;
for ($i=1; $i<=$n; $i++) { //确定层数
for ($j=1; $j<=$n-$i; $j++) { //每层输出空格数
echo " ";
}
for ($j=1; $j<=2*$i-1; $j++) { //每层的星星数
echo "*";
}
echo "\n"; //每层输出完后换行
}
空心正等腰三角形
/* 空格
* 6
* * 4
* * 2
* * * * * * * 0
*/
for ($i=1; $i<=$n; $i++) {
for ($j=1; $j<=2*($n-$i); $j++) {
echo " ";
}
for ($j=1; $j<=2*$i-1; $j++) {
if($i==1 || $i==$n) { //第一行和最后一行,全部输出*
echo "-";
}else {
if($j>1 && $j<2*$i-1) { //中间的输空格
echo " ";
} else {
echo "-"; //两边的输*
}
}
}
echo "\n";
}
实际效果好像不是那么理想,测试java和python也是一样的不理想: