java - 关于 Tetration 的问题

标签 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 程序中使用它?请帮忙

最佳答案

Tetration x ↑↑ n can be defined recursively作为

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 × 10154)。也许你需要一个 BigInteger .

(顺便说一句,exp 通常指的是一元函数ex,二元函数xy 通常称为 pow。)

关于java - 关于 Tetration 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2935312/

相关文章:

java - 如何在java中重新加载属性文件

java pcm转wav

java - Android 包名称以 .net 而不是 .com 开头以将应用程序保留在 Play 商店中?

r - R : How do I print the intermediate steps? 中的快速排序

java - 支持快速第k大元素查找的队列数据结构

java - 创建类的新实例时,类中的静态变量是否重复?

java - Web应用程序中的随机反馈

algorithm - 如何将条形码解码为 ISBN?

java - 关于寻找矩阵中最大区域的练习的时间限制异常

c++ - 基于 x 和 y 坐标排序