0

標準の 52 枚のカード デッキは、整数値 {0,1,..,50,51} を使用して表すことができます。標準的なポーカー ハンドには、このセットの 5 つの値が繰り返しなしで含まれています。

デッキのすべての 52C5 固有のハンドを表すには、次のループを使用できます。

    for (int card1 = 0; card1 < 48; card1++)
    {
        for (int card2 = card1 + 1; card2 < 49; card2++)
        {
            for (int card3 = card2 + 1; card3 < 50; card3++)
            {
                for (int card4 = card3 + 1; card4 < 51; card4++)
                {
                    for (int card5 = card4 + 1; card5 < 52; card5++)
                    {
                        var handAbcde = new List<int> { card1, card2, card3, card4, card5 };
                        // do something with the hand...
                    }
                }
            }
        }
    }

これを再帰関数にする方法を知りたいです。for試みましたが、上記のループの場合のように、カードの順序を最低から最高に維持することができませんでした。

望ましい出力の例: (繰り返しなしで最低から最高への順序付けを観察してください)

0 1 2 3 4
0 1 2 3 5
0 1 2 3 6
.
.
.
47 48 49 50 49
47 48 49 50 50
47 48 49 50 51
4

1 に答える 1