gpt4 book ai didi

c - 为什么 Ackermann 函数在这个用 C 语言编写的 Mouse 解释器中需要这么长时间?

转载 作者:行者123 更新时间:2023-11-30 15:14:05 24 4
gpt4 key购买 nike

我写了以下Mouse计算 Ackermann function 的程序:

~ Ackermann function in Mouse.
~ A(0,n) = n+1
~ A(m,0) = A(m-1,1)
~ A(m,n) = A(m-1,A(m,n-1))

1 a: ~ set a to 1
7 b: ~ set b to 2

#Y, a. b.; ~ call ack like Y(a, b);

$Y 1% n: 2% m: ~ ack
m. 0 = k: ~ store whether m == 0 in k
n. 0 = j:
j. k. > [ ~ if y>x (m==0)
n.1+! ~ add 1 + print it
| j. k. < [ ~ else if x>y (n==0)
#Y, m. 1-, 1;! ~ call ack like Y(m-1, 1)
| #Y, m. 1-, #Y, m.,n. 1-;;! ~ else, ack like Y(m-1, Y(m, n-1))
]
]
]
@ ~ end ack
$ ~ end prog

您可以使用 this 进行测试用 C 编写的解释器。也许这与鼠标是基于堆栈的有关,但这个简单的程序至少需要 15 分钟才能完成(我很不耐烦,它占用了我所有的 CPU)。

在 Golang 或 Python 中,Ackermann(1, 7)甚至 Ackermann(3, 10)计算在一秒或更短的时间内。

编译器/解释器是否有错误(我能做些什么来改进它?),或者我的 Mouse 算法很糟糕?

<小时/>

注:here是解释器的原始(评论很好!!)版本,需要在 gcc 之前修复错误同意编译。

最佳答案

关于为什么它比 Python 或 Go 慢的问题,这可能是因为编写和开发高性能解释器和编译器非常困难。 Python 和 Go 可能在这些方面做了更多的工作。例如,Python 的性能并不总是像现在这样好,而是一种受到广泛关注的重要语言。

与大多数事情一样,马是类(class)的基础。编程语言的选择取决于它最适合的语言。有些事情做起来很乏味,例如C 是 Python 中的一个片段,但为了高性能,我通常会使用 C。

关于c - 为什么 Ackermann 函数在这个用 C 语言编写的 Mouse 解释器中需要这么长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com