【发布时间】:2016-06-24 04:26:22
【问题描述】:
我在计算 Knuth 的箭头符号时遇到问题,它是 ↑,可以在函数中找到 here。到目前为止我所做的是:
int arrowCount = (int)arrowNum.Value; // Part of
BigInteger a = (int)aNum.Value; // the input I
BigInteger b = (int)bNum.Value; // already have
BigInteger result = a;
BigInteger temp = a;
for(int i = 0; i < arrowCount; i++)
{
result = Power(temp, b);
temp = r;
b = a;
}
有能力
BigInteger Power(BigInteger Base, BigInteger Pow)
{
BigInteger x = Base;
for(int i = 0; i < (Pow-1); i++)
{
x *= Base;
}
return x;
}
但它的值不正确,我无法找到修复它的方法。它可以处理 1 个箭头问题,例如 3↑3(即 3^3 = 9),但不能处理更多箭头比起那个来说。
我需要一种找出更多箭头的方法,例如3↑↑3、
应该是 7625597484987 (3^27),我得到 19683 (27^3)。如果您能帮助我弄清楚如何获得正确的输出并解释我做错了什么,我将不胜感激。
【问题讨论】:
-
你知道什么会更好吗?知道人们为什么不赞成你的东西。
-
这正是我在帖子中提到的链接。我理解它,但我似乎无法创建一个实现这种东西的函数。
-
你必须弄清楚 1 个箭头,2 个箭头的大小写,并为 3 个或更多箭头的大小写使用循环或递归函数。
-
不难吧? :D 我在回答中发布了,我使用了 java 和 double 但这不是问题 :D