【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《围圈报数java完整代码》,欢迎阅读!
import java.util.ArrayList; import java.util.List; /*
* 1,2,3,4,5,6,7...n个人围成一个圈,然后进行1,2,3报数,
* 当某个人报到3,站出来,后面的人继续报数,报到3就站出来,直至最后一个人。 *
* 方法一:递归; * 方法二:链表; * 方法三:自己编写。 * */
public class BaoShuDemo {
//i可以理解为容器里面每个数的脚码(0,1,2...);amount则为报数;x为按1至x报数(如按1,2,1,2报数)
List listNum = new ArrayList(); StringBuffer strNum = new StringBuffer(); public void baoshu(int total, int x) {
for (int i = 0; i < total; i++) { listNum.add(i + 1); } for (int i = 0, amount = 1; listNum.size() > 1; i++, amount++) {
if (i >= listNum.size()){ i %= listNum.size();
System.err.println("当前的i为 " + i); }
if (amount % x == 0) {
strNum.append(listNum.get(i) + " "); listNum.remove(i); amount = 1; } }
System.out.println(strNum.toString()+listNum.get(0)); }
public void baoshu2() { int total = 9;
for (int i = 0; i < total; i++) { listNum.add(i + 1); }
int i = 0, amount = 1, x = 2; while (listNum.size() > 0) { if (i >= listNum.size()){
}
}
i %= listNum.size(); }
if (amount % x == 0) {
strNum.append(listNum.get(i)+" "); x = listNum.get(i); listNum.remove(i); amount = 1; }
if (x != 1)// 如果x==1则不用继续报数,下个人直接退出 i++; amount++; }
System.out.println(strNum.toString());
public static void main(String[] args) { new BaoShuDemo().baoshu2(); }
本文来源:https://www.wddqxz.cn/429b3fd99ec3d5bbfd0a74bb.html