“数字三角形”-在PHP中转换为WHILE

问题描述 投票:0回答:1

我正在尝试使用WHILE循环创建数字三角形。

这是使用FOR创建的数字三角形:

Numeric triangle FOR

这是我现有的FOR代码

$m=1; $n=9; $z=9;
for($i=1; $i<=$n; $i++) {
    for($j=$i; $j<=$n-1; $j++) {
       echo "&nbsp;&nbsp;&nbsp;";
    }
    for($k=1; $k<=$m; $k++)  {
        echo $k ."&nbsp";
    }
    for($c=$m; $c>1; $c--) {
        echo $c-1 ."&nbsp";
    }
    echo "<br>";
    $m++;
}

我想使用WHILE创建数字三角形

看起来像这样:

numerictriangle-while


我尝试WHILE

$i=1;
$j=1;
$k=1;
$m=1;
while($i<=$n) {
    while($j<=$n-1) {
        echo "&nbsp;&nbsp;&nbsp;";
        j++;
    }
    while($k<=$m)  {
        echo $k ."&nbsp";
        k++;
    }
    $c=$m;
    while($c>1) {
        echo $c-1 ."&nbsp";
        c--;
    }
    echo "<br>";
    $m++;
    $i++
}

输入$ n

我不知道最后放置$ c = $ m的位置

或者也许我弄错了?

php for-loop while-loop
1个回答
0
投票

最好将每个计数器放在自己的循环之前。一般来说,如果您注意到以下示意图,则可以将任何for循环转换为while循环:

for循环通常是这样的:

for ([init]; [condition]; [increment]) {
    /* the main code */
}

while循环通常是这样的:

[init];
while ([condition]) {
    /* the main code */
    [increment];
}

所以您只需要更改代码的某些部分的位置,其结果类似于

$m=1; $n=9; $z=9;

// the main loop
$i=1;
while ($i <= $n) {
    // first loop
    $j=$i;
    while ($j <= $n-1) {
       echo "&nbsp;&nbsp;&nbsp;";
       $j++;
    }

    // second loop
    $k=1;
    while ($k<=$m) {
        echo $k ."&nbsp";
        $k++;
    }

    // third loop
    $c=$m;
    while ($c>1) {
        echo $c-1 ."&nbsp";
        $c--;
    }

    echo "<br>";
    $m++;
    $i++;
}
© www.soinside.com 2019 - 2024. All rights reserved.