【发布时间】:2023-12-08 04:46:01
【问题描述】:
Tetration 是幂以上的级别(例如: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,而不是像* talks about 那样的近似值。澄清一下,最好至少满足第一个three requirements,第四个要求可以由回答者来决定。
【问题讨论】:
-
那么
2^^1.7到底是怎么计算出来的? -
还有数字,我猜..
-
@Eugene Sh.嗯 Wiki 说 no commonly accepted solution to the general problem of extending tetration to the real or complex values of n,所以 OP,建议在 math.stackexchange.com 上发帖以获取算法
-
因此该算法不能“精确到 n 位小数”,因为对于实际高度,没有定义运算本身的正确结果是什么。
-
为了巩固我认为 Eugene 和 Kolmar 试图提出的观点,您需要首先定义您想要执行的操作(或采用其他人的定义),然后 担心高效计算的巧妙算法。
标签: c algorithm calculator exponentiation