当前位置: 首页 > 知识库问答 >
问题:

当m >= 4时,阿克曼函数不起作用

方斌
2023-03-14

维基百科:阿克曼函数

我正在为我的计算机科学课写这个程序,我不知道为什么它不起作用。太清楚了,当m

我已经检查了当m=4和n=1时,结果应该是65533,所以变量不是太小。我试过使用int、long和double。

public class Recursion {

    public static void main(String[] args) {
        System.out.print(ack(3, 8));
    }

    public static long ack(long m, long n) {
        if (m == 0) {
            return n + 1;
        } else if (m > 0 && n == 0) {
            return ack(m - 1, 1);
        }
        return ack(m - 1, ack(m, n - 1));
    }
}

共有1个答案

孟俊晖
2023-03-14

您所遇到的是一个<code>StackOverflowError</code>。您可以在此处阅读更多关于导致它们的原因以及默认堆栈大小等的信息。

在您的情况下,简单地增加堆栈大小将允许您使用输入4,1成功地运行它。您可以通过如下方式运行您的程序来实现这一点:

javac Recursion.java
java -Xss4m Recursion.java

<code>-Xss</code>标志设置了更高的堆栈大小,一段时间后您应该会得到预期的输出65533。

 类似资料:
  • 我正在使用cmake Gui构建开罗。当我点击“配置”时,Cmake显示以下错误: 找不到PIXMAN,尝试在系统变量PIXMAN中设置PIXMAN根文件夹的路径(缺少:PIXMAN_LIBRARIESPIXMAN_INCLUDE_DIRS) 找不到ZLIB(缺少:ZLIB_LIBRARYZLIB_INCLUDE_DIR) C:/cmake-3.7.0-rc1-win32-x86/share/cm

  • 问题内容: 嗨,我尝试在POST请求中尝试PHPPost请求,认为这可能对我有用,下面给出了我的代码 形成index.php文件,而index2.php是同一目录中的另一个文件,当我打开页面时,我的error.log文件中出现以下错误 我想要做的是我有一个发送发帖请求的预订表格,然后我想处理发帖值并再次将发帖请求发送到贝宝 问题答案: 您需要为php安装CURL支持。 在Ubuntu中,您可以通过

  • 问题内容: Oracle-函数不起作用 所以我不知道我在做什么错。我已经花了几个小时了,非常感谢您的帮助。 因此,基本上我有2个表,一个表被称为主列表,它是一个学生列表,另一个表被调用,它基本上具有该学生所注册课程的列表。 因此,我编写了一个函数,用于将登录学生的用户名(在本例中为)与学生列表进行比较,并确保登录用户是学生。然后,它将与表进行比较,以查找用户注册的任何程序。因此,从本质上讲,当我(

  • 问题内容: 我的html像这样 jQuery代码如下 当我单击Submit按钮时,我的ajax请求无法正常工作,看起来好像控件正在传递给JQuery Submit函数,但是ajax请求没有正确执行/正常工作,这是怎么回事? 问题答案: 将事件处理函数放入$(document).ready(function(){…})中。它现在应该工作 还添加preventDefault()以限制页面刷新

  • 我试图弹出的对话窗口在Netbean 8.0.2 Primeface如图所示http://www.primefaces.org/showcase/ui/overlay/dialog/basic.xhtml 我在我的项目中添加了primefaces-5.3.jar,但是当我键入PF时,例如: 什么也没有发生,它向我显示了一些错误:全局变量“PF”没有声明。 请帮帮我。

  • 我正在用datediff从current_timestamp查询时间戳列。但它给出了误差。 产出: 错误:Redshift表不支持指定的类型或函数(每个信息消息一个)。 警告:不支持函数“timestamp”(带有时区的timestamp)“。不支持函数“timestamptz(带时区的timestamp,integer)”。不支持函数“timestamptz(text)”。 但是如果我使用get