public static ArrayList<Hand> getPossibleHands(Hand h) {
ArrayList<Hand> allPossible = new ArrayList<Hand>();
addNext(allPossible, h);
return allPossible;
}
public static void addNext(ArrayList<Hand> poss, Hand h) {
if (h.cards.size() == 5)
poss.add(h);
else
for (int i = 0; i < 52; i++) {
Card c = Card.makeCard(i);
if (!h.contains(c))
h.add(c);
addNext(poss,h);
}
}
上面的代碼基本上是一個不完整的撲克牌(0-4卡的任何地方),並返回所有可能的完整板卡(5張牌)。我覺得應該遵循的邏輯如下:通過添加有效(不在板上)卡的每個組合的遞歸,直到板的尺寸等於5,在這種情況下,它將板添加到列表中,並且跳過功能的其餘部分。如何調試我的撲克遊戲遞歸邏輯?
但是,在函數的開始處使用print語句時,我會看到手的大小大於5或正在創建。由於該函數的第一部分應該抓住所有5,並在那裏結束它,所以我沒有看到代碼是如何在函數的其餘部分執行的。
是否出牌的順序有關係嗎?也就是說,如果兩隻手在牌的順序上僅有區別,那麼它們是否被認爲是不同的? –
@斯科特獵人不,訂單並不重要 –