- package test;
- import java.util.ArrayList;
- public class Mytest {
- public static void main(String[] args) {
-
- System.out.println(getPerson(100));
- }
-
- public static int getPerson(int count) {
-
- ArrayList<Integer> as = new ArrayList<>(100);
- for (int i = 0;i < count;i++) {
- as.add(i + 1);
- }
- return getNumber(as, 0);
-
- }
-
- public static int getNumber(ArrayList<Integer> as,int numberEnd) {
- for (int i = 0;i < as.size();i++) {
- if ((as.get(i) + numberEnd) % 14 == 0) {
- as.remove(i);
- }
- }
-
- if (as.size() > 1) {
- numberEnd += as.get(as.size() - 1);
- getNumber(as,numberEnd);
- }
-
- return as.get(0);
- }
- }
复制代码
有100个人围成一个圈,从1开始报数,报到14的这个人就要退出。然后其他人重新开始,从1报数,到14退出。问:最后剩下的是100人中的第几个人?
我使用递归算出来是55,不知道有没有大神来帮忙鉴定一下.
|
|