关于Tetration的问题

时间:2010-05-29 13:55:40

标签: java algorithm

我有问题如何计算以下程序的程序

  

http://en.wikipedia.org/wiki/Tetration

我有指数程序,返回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程序中使用它?请帮助

1 个答案:

答案 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。)