围圈报数java完整代码

时间:2022-05-19 18:55:14 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
import java.util.ArrayList; import java.util.List; /*

* 1,2,3,4,5,6,7...n个人围成一个圈,然后进行123报数,

* 当某个人报到3,站出来,后面的人继续报数,报到3就站出来,直至最后一个人。 *

* 方法一:递归; * 方法二:链表; * 方法三:自己编写。 * */

public class BaoShuDemo {

//i可以理解为容器里面每个数的脚码(012...;amount则为报数;x为按1x报数(如按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.wddqw.com/doc/429b3fd99ec3d5bbfd0a74bb.html