让我们给表达式一些名字:
x+3 = x+1+1+1 // lvl 1
x*3 = x+x+x // lvl 2
x^3 = x*x*x // lvl 3
3之后 lvl 的数学 术语/真实姓名/主题 会是什么?
像:
x (lvl 4 operation) 3 = x^x^x
x (lvl 5 operation) 3 = x(lvl 4 operation)x(lvl 4 operation)x
..
提前致谢。
P.S。以上不是编程代码/语言
答案 0 :(得分:11)
↑↑
- 或^^
。
序列中的下一个操作是pentation,然后是hexation,heptation,octation等。Ackermann's three-argument function递归地计算这些操作。
╭────────┬────────────────┬─────────────┬───────────────────╮
│ Level │ Name │ Notation │ Ackermann (3-arg) │
╞════════╪════════════════╪═════════════╪═══════════════════╡
│ 1 │ Successor │ a++ (unary) │ φ(a, 1, 0) │
│ 2 │ Addition │ a+b │ φ(a, b, 0) │
│ 3 │ Multiplication │ a×b │ φ(a, b, 1) │
│ 4 │ Exponentiation │ a↑b │ φ(a, b, 2) │
│ 5 │ Pentation │ a↑↑b │ φ(a, b, 3) │
│ 6 │ Hexation │ a↑↑↑b │ φ(a, b, 4) │
│ 7 │ Heptation │ a↑↑↑↑b │ φ(a, b, 5) │
│ 8 │ Octation │ a↑↑↑↑↑b │ φ(a, b, 6) │
╰────────┴────────────────┴─────────────┴───────────────────╯
答案 1 :(得分:3)
除了取幂之外,还没有任何一般操作(主要是由于缺乏需求)。一个可能的扩展名是tetration,它缩写了一堆具有相同值的指数。简而言之(使用 Knuth's up-arrow notation
a ^^ 1 = a
a ^^ n = a^(a^^(n-1))
= a ^ a ^ ... ^ a (n items)
向上箭头表示法本身可以堆叠,a^^^a
堆叠a
s a^^a
高,a^^^^a
堆栈a^^^a
高等等。(创建的数字非常大;阅读Graham's number以了解您可以构建的数字有多大。)
答案 2 :(得分:3)
使这成为Haskell问题的一种方法是设置实现Ackermann函数(无论哪个版本)的挑战,就自然数的“paramorphism”而言,这里通过Integer
表示,而没有其他形式的递归。
paraNat :: t -> ((Integer, t) -> t) -> Integer -> t
paraNat base step n | n > 0 = step (m, paraNat base step m) where m = n - 1
paraNat base step _ = base
众所周知,“paramorphism”对应于“原始递归”,而另一个众所周知的事实是Ackermann的函数不属于“原始递归函数”类。然而,问题有一个解决方案。线索是paraNat
在其返回类型t
中是多态的,而“原始重新定义函数”类将t
修复为自然数。
(我意识到通过提出一个问题来回答一个问题是非常正统的,但我希望无论如何它都很有趣。如果民众认为它有问题,我会删除这个答案。)