維基百科: 阿克曼函式
我正在為我的計算機科學課撰寫這個程式,但我不知道為什么它不起作用。太清楚了,程式在 m <= 3 時作業。
我檢查了當 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));
}
}
uj5u.com熱心網友回復:
你正在經歷的,是一個StackOverflowError. 您可以在此處和此處閱讀有關導致它們的原因以及默認堆疊大小等的更多資訊。
在您的情況下,只需增加堆疊大小即可使用輸入 4、1 運行它。您可以通過如下運行程式來實作:
javac Recursion.java
java -Xss8m Recursion.java
-XssFlag 設定了更高的堆疊大小,一段時間后您應該會得到預期的輸出 65533 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/523500.html
標籤:爪哇递归
上一篇:作為gnuplot中的引數的函式
