Тетрация — это уровень выше возведения в степень (например: 2^^4 = 2^(2^(2^2)) = 65536.
Пока что я придумал работающий алгоритм тетрации.
Однако, хотя переменная a
может быть с плавающей запятой или целым числом, к сожалению, переменная b
должна быть целым числом.
Как я могу изменить алгоритм псевдокода, чтобы и a
, и b
могли быть числами с плавающей запятой, и был получен правильный ответ?
// Hyperoperation type 4:
public float tetrate(float a, float b)
{
float total = a;
for (i = 1; i < b; i++) total = pow(a, total);
return total;
}
Пытаясь решить эту проблему, я создал свою собственную функцию power() (пытаясь избежать корней и функций журнала), а затем успешно обобщил ее на умножение. К сожалению, когда я затем пытаюсь обобщить до тетрации, числа приобретают грушевидную форму.
Я хотел бы, чтобы алгоритм был точным до x количества знаков после запятой, а не приближением, как говорит Википедия о. Чтобы уточнить, желательно, чтобы он должен был удовлетворять как минимум первым трем требованиям, а четвертое требование может быть до ответчика.
2^^1.7
? - person Eugene Sh.   schedule 14.05.2015