我有问题如何计算以下程序的程序
我有指数程序,返回x ^ n这里是代码
public class Exp{
public static long exp(long x,long n){
long t=0;
if (n==0){
t= 1;
}
else{
if (n %2==0){
t= exp(x,n/2)* exp(x,n/2);
}
else{
t= x*exp(x,n-1);
}
}
return t;
}
public static void main(String[]args){
long x=5L;
long n=4L;
System.out.println(exp(x,n));
}
}
但是如何在Tetration程序中使用它?请帮助
答案 0 :(得分:4)
Tetration x↑↑n can be defined recursively as
x ↑↑ n = x ^ (x ↑↑ (n-1))
所以你可以写
long tetration(long x, long n) {
if (n == 0)
return 1;
else
return exp(x, tetration(x, n-1));
}
但请注意,分裂变得非常快,long
不足以存储甚至4↑↑3(= 1.3×10 154 )。也许你需要一个BigInteger。
(BTW,exp
通常是指一元函数 e x ,二元函数 x y < / em>通常称为pow
。)