求高手来给点思路,算法学得不好。。。
有500个小朋友拉成一个圆圈,从其中一个小朋友开始依次编号1-500,从1号小朋友开始循环1-3报数,数到3的小朋友就退出。编写一个Java应用程序,计算出最后一个小朋友的号码是多少?
我估计我的代码明显错了,理解有问题,好像不是这样做的,求解?
package Four;
import java.util.ArrayList;
import java.util.List;
public class A5 {
	public static int getNumber(List<Integer> list){
		int number=0;
		for(int i=0;i<list.size();i++){
			if((i+1)%3==0){list.set(i,0);}
		}
		for(int i=0;i<list.size();){
			if(list.get(i)==0){
				list.remove(i);continue;
				}
			i++;
		}
		if(list.size()==3){number=list.get(2);}
		else{number=getNumber(list);}
	     return number;
		
	}
	public static void main(String args[]){
		ArrayList<Integer> list=new ArrayList<Integer>();
		for(int i=1;i<=500;i++)
			list.add(i);
		System.out.println("最后一个退出的编号是"+getNumber(list));
		
	}
}
------解决方案--------------------约瑟夫环
------解决方案-------------------- 用LinkedList吧