2015-10-26 90 views
3

让我们给表达式一些名字:指数运算(^)​​后有什么数学运算?

x+3 = x+1+1+1 // lvl 1 
x*3 = x+x+x // lvl 2 
x^3 = x*x*x // lvl 3 

是什么数学项/真实姓名/主题拉特年代后3?

像:

x (lvl 4 operation) 3 = x^x^x 
x (lvl 5 operation) 3 = x(lvl 4 operation)x(lvl 4 operation)x 
.. 

在此先感谢。

P.S.以上不是编程代码/语言

+4

如何,这是一个Haskell问题? –

+4

查看原始三个参数[Ackermann函数](https://en.wikipedia.org/wiki/Ackermann_function)! – pigworker

+0

注意'n! 〜n^n' – Lol4t0

回答

11

Tetration是指数后的下一个hyperoperator。运营商以↑↑ - 或^^(以ASCII表示) - Knuth's notation

序列中的下一个操作是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)  │ 
╰────────┴────────────────┴─────────────┴───────────────────╯ 
3

除了求幂(主要是由于缺乏需求)之外,没有任何一般操作。一个可能的扩展名是tetration,它缩写了具有相同值的指数堆栈。简言之(使用 Knuth's up-arrow notation

a ^^ 1 = a 
a ^^ n = a^(a^^(n-1)) 
     = a^a^...^a (n items) 

向上箭头符号本身可以被堆叠,并且a^^^aa小号a^^a高,a^^^^a堆叠的堆叠a^^^a高,等。(创建的数字是滑稽大;读约Graham's number找出你可以建立多大的数字。)

3

一个使哈斯克尔问题成为问题的方法是设置实现阿克曼函数(无论哪个版本)的挑战,以自然界的“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”对应于“原始递归”,而它的另一个众所周知的事实,阿克曼的功能是不是在类的“原始递归函数”。然而,问题有一个解决方案。线索是paraNat在其返回类型t中是多态的,而“原始再恢复函数”类将t修正为自然数。

(我知道这是一个触摸非正统的,回答一个提问一个问题,但我希望这是有趣的反正。我好象人们认为这是有问题的删除这个答案。)

+0

有趣,但我已经彻底改造了Ackermann函数的纯副本,这让我想知道它是否真的存在; d 哈斯克尔完全等于爱 –

+0

你也可以做到没有多态。 – augustss