本帖最后由 hu_shengyang 于 2011-03-04 01:57:24 编辑

解决方案 »

  1.   

    你确定要算这玩意,后面的数估计连double都装不下。
      

  2.   

    拿去玩吧。就不知道會跑多久了。import java.math.BigDecimal;
    import java.util.ArrayList;
    import java.util.Date;
    import java.util.List;
    public class Array2Number {
    public static void main(String[] args){
    BigDecimal i=new BigDecimal(1);
    BigDecimal j=new BigDecimal(2);
    BigDecimal k=new BigDecimal(4);List<BigDecimal> arr=new ArrayList();
    arr.add(0,i);
    arr.add(1,j);
    arr.add(2,k);for(int a=1;a<33;a++){
    long s = (new Date()).getTime();
    Integer b=a+1;
    BigDecimal x = arr.get(a);
    BigDecimal y = arr.get(b);
    BigDecimal z= x.multiply(y);
    long e = (new Date()).getTime();
    System.out.println(a+" ("+(e-s)+") "+ z);
    arr.add(a+2,z);
    }
    }
    }
      

  3.   

    算这么个玩意,BigDecimal都用上了  
      

  4.   


    public static void main(String[] args) {
    BigInteger bn = new BigInteger("2");
    for(int tar=1;tar<32;tar++){
    System.out.println((bn.pow(getNum(tar-1))));
    }
    }

    static int getNum(int n){
    if(n==0 || n==1 || n==2){
    return n;
    }else{
    return (n-2)+(n-1);
    }
    }
    结果和你的不一样.但前5项相同..
    第一项没用么?为什么直接从第2项开始.第2位数*第3位数=第4位数
      

  5.   


    public BigDecimal test(int num){
    BigDecimal bigDecimalTemp = new BigDecimal(0);
    BigDecimal bigDecimalTemp2 = new BigDecimal(0);
    BigDecimal result = new BigDecimal(0);
    for(int i = 1 ; i < num ; i++){
    if(i == 1){
    bigDecimalTemp = BigDecimal.valueOf(i);
    bigDecimalTemp2 = BigDecimal.valueOf(2);
    System.out.println(i+"\t"+1);
    }
    result = bigDecimalTemp.multiply(bigDecimalTemp2);
    System.out.println((i+1) +"\t"+ bigDecimalTemp +" * " + bigDecimalTemp2 +" = "+ result);
    bigDecimalTemp = bigDecimalTemp2;
    bigDecimalTemp2 = result;

    }
    return result;
      

  6.   

    如果让你搞天气预报或者gis,这些是基础。
      

  7.   


        static int getNum(int n){
            if(n==0 || n==1 || n==2){
                return n;
            }else{
                return (n-2)+(n-1);
            }
        }
    改成
        static int getNum(int n){
            if(n==0 || n==1 || n==2){
                return n;
            }else{
                return getNum(n-2) + getNum(n-1);
            }
        }
      

  8.   

    这相当于整数乘法,为什么用BigDecimal,为什么不用BigInteger?
      

  9.   


    import java.math.BigInteger;
    public class MyTest {       public static BigInteger  ShowNumber( int n ){
           BigInteger result = null;
           if( n == 1) {
               result = BigInteger.valueOf(1);
           }else if( n == 2 ) {
               result = BigInteger.valueOf(2);
           }else if( n == 3 ) {
               result = BigInteger.valueOf(4);
           }else{
               result = ShowNumber( n-1 ).multiply( ShowNumber( n-2 ) );
           }
           
           return result;
       }    public static void main(String[] args){
            System.out.println(ShowNumber(20));
        }
      

  10.   

    第1个数是4.0
    第2个数是8.0
    第3个数是32.0
    第4个数是256.0
    第5个数是8192.0
    第6个数是2097152.0
    第7个数是1.7179869184E10
    第8个数是3.6028797018963968E16
    第9个数是6.1897001964269014E26
    第10个数是2.2300745198530623E43
    第11个数是1.3803492693581128E70
    第12个数是3.0782817340933187E113
    第13个数是4.249103942534137E183
    第14个数是1.307993905256674E297
    第15个数是Infinity
    第16个数是Infinity
    第17个数是Infinity
    第18个数是Infinity
    第19个数是Infinity
    第20个数是Infinity
    第21个数是Infinity
    第22个数是Infinity
    第23个数是Infinity
    第24个数是Infinity
    第25个数是Infinity
    第26个数是Infinity
    第27个数是Infinity
    第28个数是Infinity
    第29个数是Infinity
    第30个数是Infinity
    第31个数是Infinity
    成功生成(总时间:2 秒)
      

  11.   

    2的31次方,Integer.MAX_VALUE不2的31次方减1
      

  12.   

    错了,看来得用大数剩法或者BigDecimal试试
      

  13.   

    哥,你这样会把你的CPU跑死的!你不累CPU累啊.....再说现实中好像不怎么需要这样大的数据吧?
      

  14.   

    这个很简单嘛
    先取个以2为底的对数
    上面的数列就变成斐波那契数列
    取斐波那契数列的第31项,N=Fibonacci(31)
    最后结果就是2的N次方。当然这个数字用10进制表示起来很麻烦
    但是题目也没规定一定要用10进制啊
    用2进制表示就是,1后面(N-1)个0
      

  15.   

    补充说明一下,上面的数列去对数之后,乘法变加法
    除了第一项以外,都是跟斐波那契数列一样的
    N=Fibonacci(32),不是31,上面不小心打错了