1

次のような関数内に do-while ループがあります。

do
{
    // a bunch of stuff
    if (something < something else)
    {
        return true;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return false;
        }
        else
        {
              return true;
         }
     }
} while (condition);

ここでの私の問題はcondition、最後にあります。これを追跡する唯一の方法は、ループの前にブール変数を宣言し、そのreturn値を値と一致するように設定しwhile()、各反復後にそれをチェックすることです。while()これは機能しますが、私にはかなり洗練されていないように思われ、return代わりに値を利用できる方法があるかどうか疑問に思っていました。

4

3 に答える 3

2

あなたの状態がどのように見えるかは明らかではありません。とにかく、おそらく無限ループが必要です。

for (; ;) {
    … your code here …
}

また:

while (true) {
    … your code here …
}

このループはそれ自体で停止することはありませんがreturn、これを使用して終了するので問題ありません。

于 2011-03-18T15:02:49.310 に答える
1

言い換えようとしているためにコードが正しくないと仮定すると、これは、戻り値がwhile();

他の人にとって、以下のコードは正しくないロジックですが、私は彼が利用した同様の疑似コードでそれを維持しようとしています. 基本的に、 while で戻り値を模倣したい場合は!、条件を終了するために return が必要です。

do
{
    // a bunch of stuff
    if (something < something else)
    {
        return !condition;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return condition;
        }
        else
        {
              return !condition;
        }
    }
} while (condition);
于 2011-03-18T15:07:02.453 に答える
0

あなたはただ言うことができます

 do
{
    // a bunch of stuff
    if (something < something else)
    {
        return true;
    }
    else if (stuff > other stuff)
    {
        if (something != other stuff)
        {
             return false;
        }
        else
        {
              return true;
         }
     }
     else if(exit_condition)
      break;
} while (1);
于 2011-03-18T15:05:49.717 に答える