我有一个程序要写。要求是1.实现代码(选择你喜欢的语言),它将计算2 ^(3 ^(4 ^(5 ^ 6))的值
到目前为止我所写的是(4 ^(5 ^ 6)。但是,我得到0作为输出,尽管事实上我甚至将第二个参数从整数改为long。需要一点帮助。这里需要帮助。这里是我的代码:
public static void main(String args[]) {
int i=4,j=5,k=6;
System.out.println(pow(i,pow(j,k)));
}
public static long pow(int c, long l){
long n=1;
for(int i=0;i<l;i++){
n=c*n;
}
return n;
}
答案 0 :(得分:4)
4 ^(5 ^ 6)等于4 ^ 15625,大约是1,53 * 10 ^ 9407,这个数字大大超过了Long类型的最大值,即(2 ^ 64)-1。 / p>
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
答案 1 :(得分:3)
这些数字很大。真。 5 ^ 6 = 15625.将4提升到那个力量,你将得到足够的数字,因为已知宇宙中有粒子。
0的问题来自4是100的二进制。乘以4,你得到二进制10000。提升到稍微多一点(最大功率8,16,如果数据类型支持它可能是32;一般说话)并且你将丢弃整数表示中的单个1位=&gt; 0
答案 2 :(得分:2)
正如你所说,你可以选择语言。我建议你用Matlab或Octave实现这个计算:
2^3^4^5^6
打印出您期望的结果。
答案 3 :(得分:1)
输出足够大,并在穿过Long.MAX_VALUE后跳转到零。
答案 4 :(得分:1)
您可以使用Java的BigInteger
,但我不确定这么大的数字是否可以存储在内存中。
答案 5 :(得分:1)
首先,您可以使用Math.pow(2,3)来计算2 ^ 3.但是由于输出很大,如下面的代码所示,即使double也将返回Infinity:
package test;
public class Test {
public static void main(String[] args) throws Exception {
// 2^(3^(4^(5^6)))
System.out.println(Math.pow(2, Math.pow(3, Math.pow(4, Math.pow(5, 6)))));
}
}
但是你可以使用java.math.BigDecimal,它可以处理这个大整数。对于这个问题我会建议python,你可以写吗
2 ** (3 ** (4 ** (5 ** 6)))
编辑:
你知道4 **(5 ** 6)已经是
http://paste.ubuntu.com/6840260/
你真的想用Java中的这个数字计算,这不是数学问题最快的语言吗?
答案 6 :(得分:0)