在PHP中打印没有嵌套循环的模式

pcww981p  于 2022-12-02  发布在  PHP
关注(0)|答案(5)|浏览(122)

我的代码的输出应该是:

*
**
***
****
*****

我目前正在使用这段代码和一个嵌套的for循环来获得结果。

for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    for($starCount=1;$starCount<=$lineNumber;$starCount++)         {
            echo("*");
    }
        echo("<br />");
}

我需要在不使用嵌套for循环的情况下也能得到同样的结果,但我被难住了。我唯一想使用的是一个for循环,没有其他任何东西。没有if、开关或其他循环。
谢谢你!

pxyaymoc

pxyaymoc1#

$str = '';
for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    $str = $str . '*';
    echo $str;
    echo("<br />");
}

使用此字符串累加器无需第二个循环。

vuktfyat

vuktfyat2#

使用此选项:

for($lineNumber=1;$lineNumber<=5;$lineNumber++) {
    echo str_repeat("*",$lineNumber);
    echo("<br />");
}
iq3niunx

iq3niunx3#

根据您的要求,可以使用concat字符串,但是如果字符串与前面的字符串不相同怎么办?下面是每个模式的解决方案,没有任何循环。

$i = 0;
a:
if($i <= 5){
    $j = 1;
    b:
    if($j<=$i){
        echo $i;
        $j++;
        goto b;
    }
    echo "<br/>";
    $i++;
    goto a; 
}

这将打印

1
22
333
4444
55555

你可以做任何像这样的图案。

w3nuxt5m

w3nuxt5m4#

这里是它的递归版本。

function inner($num)
{
    if ($num == 0)
        return;
    echo "*";
 
    inner($num - 1);
}
 
function outer($n, $i)
{
    if ($n == 0)
        return;
    inner($i);
    echo "<br/>";
    outer($n - 1, $i + 1);
}
 
$n = 5;
outer($n, 1);
d5vmydt9

d5vmydt95#

以下是绘制金字塔的一些示例:

function print($n)
{
    //example 1
    for ($x = 1; $x <= $n; $x++) {
        for ($y = 1; $y <= $x; $y++) {
            echo 'x';
        }
        echo "\n";
    }

    // example 2
    for ($x = 1; $x <= $n; $x++) {
        for ($y = $n; $y >= $x; $y--) {
            echo 'x';
        }
        echo "\n";
    }

    // example 3

    for($x = 0; $x < $n; $x++) {
        for($y = 0; $y < $n - $x; $y++) {
            echo ' ';
        }
        for($z = 0; $z < $x * 2 +1; $z++) {
            echo 'x';
        }
        echo "\n";
    }

}

相关问题