日期:2014-05-20  浏览次数:20746 次

请问如何使用大数据(BigDecimal)求棋盘议长麦的问题
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类型求出准确值,另外,这个可以用递归方法解决吗?谢谢

------解决方案--------------------
//打算循环输出?
Java code

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);
        }
        
    }
}