求个函数 2的多少次方例如
8 =2*2*2如果输入 8
结果是  8如果输入 7(2*2+2*1+2*0)
结果是 
      4
      2
      1
如果输入 16
结果是  16如果输入 15
结果是  8
        4
        2
          1如果输入 10
结果是  8
        2 

解决方案 »

  1.   

    //算最大2次幂数
    public double pow2(double n)
            {
                double i = 0;
                double temp = n;
                while (Math.Pow(2, i) < n)
                {
                    i++;
                }
                if (Math.Pow(2, i) > n)
                    return --i;
                else
                    return i;
            }//主函数
            public List<double> Get2PowArray(double n)
            {
                double temp = n;
                List<double> arraylist = new List<double>();
                while (temp >= 1)
                {
                    double maxindex = this.pow2(temp);
                    temp -= Math.Pow(2, maxindex);
                    arraylist.Add(Math.Pow(2, maxindex));
                }
                return arraylist;
            }
      

  2.   

    返回的是一个List<double>顺序输出就是你想得到的结果了.