有 1到50 这50个数,从左到右报数,单数的出列,之后再从左到右数,单数又出列......一直循环下去,问:最后出列的是那个数?   方法是什么?

解决方案 »

  1.   


    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int num=1;
    for(int i=50;i>1;i=i/2)
    {
    num=num*2;
    }
    System.out.println(num);
    }
      

  2.   

    递归也可以public int num(int i)
    {
    if(i/2>=1)
    return 2*num(i/2);
    else return 1;
    }
      

  3.   

    最后留在位置的是原来32号的,最后出列的是48.public class DanShu {
    public int chuLie(){
    boolean[] number=new boolean[50];
    int leftCount=50,countNumber=0,index=0,m=0;
    for(int i=0;i<number.length;i++){
    number[i]=true;
    }
    while(leftCount>1){
    if(number[index]){
    countNumber++;
    if(countNumber%2!=0){
    number[index]=false;
    leftCount--;
    if(leftCount==1){
    m=index+1;
    }
    }
    }
    index++;
    if(index==50){
    index=0;
    countNumber=0;
    }
    }
    return m;

    }
    public static void main(String[] args){
    DanShu danShu=new DanShu();
    int i=danShu.chuLie();
    System.out.println("最后出列的是原来排在"+i+"位置的数字。");
    }}
      

  4.   

    这个跟数三退1差不多,可以设置一个boolean类型的数组,如果奇数就设置值为true,最后的false就是你想要的~~
      

  5.   

    放到一个ArrayList里面递归行不
      

  6.   

    类(编号)
    容器<类>
    50个对象装入容器
    while(容器多于1个){
     for(int i=1,i<容器长度,i+2){
      容器.remove(容器(i))  
     }
    }
    输出最后一个