вопрос о тетрации - PullRequest
1 голос
/ 29 мая 2010

У меня есть вопрос, как написать программу, которая рассчитывает следующие процедуры

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 Ответ

4 голосов
/ 29 мая 2010

Tetration x & uarr; & uarr; n можно определить рекурсивно как

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 & times; 10 154 ). Возможно, вам нужен BigInteger .

(Кстати, exp обычно относится к унарной функции e x , двоичная функция x y обычно называется pow.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...