编号为1,2,3,4.......n的一群人沿顺时针方向围城一圈,选一个整数m,从1号开始顺时针方向报数,报到m的那个人出列,然后从下一位开始重新报数,还是到m的那个人出列,请实现一个方法,以n和m为参数打印出所有的顺序。
如void f(int n, int m){ }
如,当n=6,m=3的时候,f(6, 3)打印出"3,6,4,2,5,1"直接上代码import java.util.ArrayList; import java.util.List; /** * @description:编号为1,2,3,4.......n的一群人沿顺时针方向围城一圈,选一个整数m,从1号开始顺时针方向报数,报到m的那个人出列,然后从下一位开始重新报数,还是到m的那个人出列,请实现一个方法,以n和m为参数打印出所有的顺序。 * * @author: baibai * * @date: 2015-8-10 下午4:51:54 * * @version V3.0 */ public class PrintData { public void showData(int n, int m) { List<Integer> lst = new ArrayList<Integer>(); for (int i = 1; i <= n; i++) { lst.add(i); } int k = 1, s = 0; while (lst.size() != 0) { if (k == m) { System.out.print(lst.get(s) + " "); lst.remove(s); k = 1; } else { k = k + 1; s = s + 1; } if (s >= lst.size()) { s = 0; } } } public static void main(String[] args) { new PrintData().showData(6, 3); } }