jjzjj

ackermann

全部标签

c++ - 我的程序在 Windows 机器上崩溃但在 Linux 上运行正常

我尝试在我的笔记本电脑(Win10)上编写Ackermann函数,但是程序在更高的值时崩溃了,而不是继续计算几分钟或几小时。我的friend在他的机器(SUSE)上尝试了相同的代码,它工作得很好,然后我们在学校服务器(CentOS)上尝试了它,但它再次崩溃。编辑:它也在服务器上工作,只需要再试一次。它也适用于我们尝试过的另一台服务器……所有这些都在Linux上。我们怀疑它背后是堆栈溢出,但这很奇怪,因为值还没有那么高。那么我如何能够在这个系统上执行递归函数呢?谢谢大家的回答。我只是好奇它为什么会发生以及如何让它在我的机器上运行。我尝试同时使用C和C++,但没有任何变化。#include

c++ - Ackermann 函数在 C++ 中不能正常工作

在我的阿克曼函数家庭作业中,我解决了如下问题intmain(){inty=ack(4,1);cout0&&n==0){returnack(m-1,1);}elseif(m>0&&n>0){intx=ack(m,n-1);returnack(m-1,x);}else{cout此函数适用于m=3和n=10的低值但是当我给出m=4/above或n=15/above时,这不起作用。我没有出局。程序直接退出,没有任何警告、错误或结果。请有人告诉我发生这种情况的原因以及如何解决这个问题。 最佳答案 数字(4,15)是一个无法计算和表示的大数字。

c++ - 计算 ackermann 函数的较大值

我有一些代码:intCalculateAckermann(intx,inty){if(!x){returny++;}if(!y){returnCalculateAckermann(x--,1);}else{returnCalculateAckermann(x--,CalculateAckermann(x,y--));}}旨在计算阿克曼函数。在x和y的数量相当少的情况下,应用程序会导致堆栈溢出,因为它递归得太深并导致相当大的数字。我将如何着手慢慢计算解决方案? 最佳答案 请注意,如果您只想使用封闭形式,则mintTetration(i

c# - .Net 函数调用 (C# F#) VS C++ 的性能

自从F#2.0成为VS2010的一部分后,我对F#产生了兴趣。我想知道使用它有什么意义。我读了一些书,然后制定了一个衡量函数调用的基准。我用过阿克曼函数:)C#sealedclassProgram{publicstaticintackermann(intm,intn){if(m==0)returnn+1;if(m>0&&n==0){returnackermann(m-1,1);}if(m>0&&n>0){returnackermann(m-1,ackermann(m,n-1));}return0;}staticvoidMain(string[]args){StopwatchstopWa

java - 如何以非递归方式重写 Ackermann 函数?

我有功能publicstaticintfunc(intM,intN){if(M==0||N==0)returnM+N+1;returnfunc(M-1,func(M,N-1));}如何以非递归方式重写它?也许,它是某种算法的实现? 最佳答案 不完全是O(1),但绝对是非递归的。publicstaticintitFunc(intm,intn){Stacks=newStack;s.add(m);while(!s.isEmpty()){m=s.pop();if(m==0||n==0)n+=m+1;else{s.add(--m);s.add

ruby - "Stack level too deep"在 Ruby 中带有 Ackermann 函数

我正在使用Rubyv1.9.1为我在大学的类(class)编写一个带有Ackermann函数的程序。代码如下:defackermann(n,m)ifn==0&&m>0returnm+1elsifn>0&&m==0returnackermann(n-1,1)elsifn>0&&m>00returnackermann(n-1,ackermann(n,m-1))elseputs"Wronginput,mandnmustbehigherthan0"endendputsackermann(5,5)这是一个高度递归的函数。所以我得到错误“堆栈级别太深(SystemStackError)”。有什么方