我正在尝试编写一个打印出数组的每个索引的递归方法。我的手牌代表一张五张牌,使用长度为5的Card []牌。到目前为止,我的方法是以下。它有效,但有没有更好的方法来做到这一点,而不是从索引的整数参数开始?请帮忙。
public static void printHandForward (Hand hand, int index) {
if(index == hand.cards.length) {
return;
}
else {
Card.printCard(hand.cards[index]);
index++;
printHandForward(hand, index);
}
}
答案 0 :(得分:1)
如果必须使用递归,则必须以某种方式使用int参数调用此方法。
您只需添加一个只需Hand
的重载,它会调用您当前的方法:
public static void printHandForward(Hand hand) {
printHandForward(hand, 0);
}
但是,避免重复并仅使用增强的for语句会更容易。
答案 1 :(得分:0)
为什么你需要一个递归方法,而你不能只使用:
public static void printHandForward (Hand hand) {
for(Card card: hand.cards) {
Card.printCard(card);
}
}
?
如果您确实需要递归方法,我建议使用以下代码:
printHandForward(hand, hand.length);
...
public static void printHandForward (Hand hand, int index) {
if(index > -1) {
printHandForward(hand, index -1);
Card.printCard(hand.cards[index]);
}
}