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