2

以下のコードは、ネストされたwhileループを示していますが、あまり効率的ではありません。コードを拡張して、ネストされた100個のwhileループを含めるとします。このタスクを実行するためのより良い方法はありますか?

<?php 

$count = 1;

 $num = 1;
 $options=3;
 while ( $num <=$options ) 
    { 
echo "(".$num . ") "; 

    $num1 = 1; 
    $options1=3;
    while ( $num1 <=$options1 ) 
    { 
    echo "*".$num1 . "* "; 

        $num2 = 1; 
        $options2=3;
        while ( $num2 <=$options2 ) 
        { 
        echo "@".$num2 . "@ ";  

            $num3 = 1; 
            $options3=3;
            while ( $num3 <=$options3 ) 
            { 
            echo $num3 . " ";   
            $num3++; 
            $count++;
            }

        echo "<br />";
        $num2++; 
        }

    echo "<br />";
    $num1++; 
    }

echo "<br />";
$num++; 
} 
  echo $count;
 ?>
4

3 に答える 3

3

ネストされたwhileループではなく、再帰を使用するようにアルゴリズムを調整する必要があります。

于 2010-05-22T18:40:18.590 に答える
0

再帰関数を使用できます。

于 2010-05-22T18:40:57.480 に答える
0

ループをネストする必要がある場合は、十分に効率的です。

他の人が言っているように、再帰を使用すると、さまざまなレベルをよりエレガントに「ネスト」できます。また、ネストのレベルは、プログラムにハードコーディングするのではなく、動的に制御できます。ただし、デザインでネストする必要がある場合は、 100ループすると、ほぼ確実にデザインが完全に狂ってしまいます。

(ただし、指定した特定の例では、ループ(または再帰)はまったく必要ありません。すべてのループは一定の長さであるため、結果を事前に計算して、単一の定数文字列をエコーするだけです。これは、書きたい実際のコードではなく、架空の例ですか?)

于 2010-05-22T18:47:33.867 に答える