package com.tiankechuan.exam;import java.math.BigDecimal;/*
 * 在棋盘的第1个格子里放1粒,在第2个格子里放2粒,在第3个格子里放4粒,
 * 在第4个格子里放8粒,依此类推,以后每一个格子里放的麦粒数都是前一个
 * 格子里放的麦粒数的2倍,直到放满第64个格子就行了”
 */
public class ChessTest
{
public static void main(String[] args)
{
long number1 = 2, number2 = 4, count = 0;
for (int i = 1; i <= 5; i++)
{
if (i == 1)
{
count = 1;
}
if (i == 2)
{
count = 2;
}
if (i == 3)
{
count = 4;
}
else
{
count = number1 * number2;
number1 = number2;
number2 = count;
}
}
System.out.println(count);
}
}
用long类型数值不够,请问如何用BigDecimal类型求出准确值,另外,这个可以用递归方法解决吗?谢谢

解决方案 »

  1.   

    要把实际结果求出来,也就是麦子的总数,用long打印不出来,long不够,所以要用的大数据BigDecimal,但是我不会,还有用递归可以做吗,可以帮我实现一下吗?谢谢各位了
      

  2.   


    import java.math.BigDecimal;public class ChessTest {
    static BigDecimal start = new BigDecimal("2");
    public static BigDecimal CalCount(int n){
    if(n==0){
    return start;
    }
    start = start.pow(n);

    return start;
    }
    public static void main(String[] args) {
    BigDecimal count = ChessTest.CalCount(1);
    System.out.println(count);
    }
    }
      

  3.   

    //打算循环输出?import java.math.BigDecimal;public class ChessTest {
        static final BigDecimal start = new BigDecimal("2");
        public static BigDecimal CalCount(int n){      BigDecimal result=start.pow(n);
            
            return result;
        }
        public static void main(String[] args) {
            for(int i=0;i<64;i++){
                BigDecimal count = ChessTest.CalCount(i);
                System.out.println(count);
            }
            
        }
    }