- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我写了以下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/
我有一些代码: int CalculateAckermann(int x, int y) { if(!x) { return y++; } if(!y)
我有功能 public static int func(int M,int N){ if(M == 0 || N == 0) return M+N+1; return func(M-1
gcc(我在 Mac 和 Linux 上使用 -O3 标志尝试了 4.7.2)将 ackermann 函数优化为具有大的单个调用本地堆栈。下面是阿克曼代码示例: int ack(int m,int n
我正在尝试在 haskell 中编写一个 super 操作函数。 它通常写为ackermann(a,b,n),但出于部分应用的目的,我认为将n放在前面更有意义。因此,我将其称为 hypOp n a b
因此,我尝试创建基本 Ackermann 函数的修改版本,该函数使用字典来存储已经计算的值,以便下次程序遇到类似的函数调用时,它可以使用已经计算的值,并且这个似乎大大加速了这个过程。这是代码: imp
在我的阿克曼函数家庭作业中,我解决了如下问题 int main() { int y = ack(4,1); cout 0 && n == 0) { return
我用 C 编写了一个程序,用于计算用户输入的 2 个非负整数的 Ackermann 值。该程序检查整数是否为非负数,如果是,则计算它们的阿克曼值,然后请求新的输入或退出。该程序在 C 中运行良好,我没
我试图在 Coq 中定义 Ackermann-Peters 函数,但收到一条我不明白的错误消息。如您所见,我正在打包参数 a, b阿克曼一对 ab ;我提供了一个为参数定义排序函数的排序。然后我使用
我尝试计算Ackermann(4,1),不同语言/编译器之间的性能存在很大差异。以下是我的 Core i7 3820QM、16G、Ubuntu 12.10 64 位、 上的结果 C:1.6s,gcc
这是 7 个月前的一个老问题,当时堆栈溢出者一致认为 Haskell 计算 Ackermann 函数的效率低下是由于编译器错误造成的。 Ackermann very inefficient with
好的,这是家庭作业,所以请尝试直接指导我,不要给我直接的答案。我正在尝试使用 Ackermann 函数 (C++) 进行内存。当到达 Ackermann(1,2) 时,它没有达到我的预期。有些东西告诉
我想创建一个返回两个值的函数。第一个应该是ackerman函数的输出,第二个应该是函数被调用的次数。 我做了Ack函数: def ack(m,n): if m == 0: re
我收到以下代码的 StackOverflowError (线程“main”java.lang.StackOverflowError 中的异常)。但该程序对于 m=3、n=3(或其他较低值)运行良好,但
这个问题在这里已经有了答案: How can I prevent my Ackerman function from overflowing the stack? (2 个答案) 关闭 5 年前。
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在使用 Ruby v1.9.1 为我在大学的类(class)编写一个带有 Ackermann 函数的程序。代码如下: def ackermann(n,m) if n == 0 && m > 0
可以使用参数 m>=4 和 n>=1 来计算总的可计算递归函数 ackermann(m,n)在 python 中不超过最大递归深度? def ackermann(m,n): if m == 0
我是一名优秀的程序员,十分优秀!