package shop;
import java.util.ArrayList;
import java.util.List;
public class Test {
/**
* @param list 集合
* @param startNumber 第一个人开始数的号数
*/
public static void execute(List<Integer> list ,int startNumber){
ArrayList<Integer> removeList = new ArrayList<Integer>();//保存一次循环后要移除的人
int nextStartNumber = (list.size() + startNumber -1) % 3 + 1;//下一轮第一个人数的数字
for (int i = startNumber; i < list.size()+startNumber; i++) {
if (i % 3 == 0) {
System.out.println("数到3的人是:"+list.get(i-startNumber));
removeList.add(list.get(i-startNumber));
}
}
list.removeAll(removeList);//移除这一次数到3的人
if (list.size() == 1) {
return ;
}
System.out.println("*****************************");
execute(list,nextStartNumber);//递归循环直到剩下最后一个
}
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int i = 1; i <= 20; i++) {
list.add(i);//二十个人的集合
}
execute(list,1);
for (Integer integer : list) {
System.out.println(integer);
}
}
}