阿克曼函数错误消息

时间:2014-09-06 23:27:37

标签: java recursion error-handling ackermann

当输入值太高时,我试图让我的程序输出错误代码,但我只能在终端窗口中显示错误消息,而不是在方法返回中。这是代码:

public class AckermannAdvanced
{
   public static long ack (long m, long n)
  {
    long ans;

System.out.print("\f");
if (m > 3 && n > 1) {
    System.out.print("Input values are too high");
}



else {

if (m == 2) ans = (2*n)+3;
else if (m == 1) ans = n+2;
else if (m == 0) ans = n+1;
else if (n == 0) ans = ack(m-1, 1);
else ans = ack(m-1, ack(m, n-1));

System.out.print(ans);


return(ans);
} 
return(0);
   }
}

1 个答案:

答案 0 :(得分:0)

您可以使用带有大写 L 的 Long,然后它是一个表示 long 的对象。一旦您返回一个对象,您就可以返回 null。 Java 返回时自动将 long 转换为 Long,因此其他返回应该是相同的。所以

    public static Long ack(long m, long n) //...
    //...
    if (m > 3 && n > 1) {
        return null;
    }

或者你可以让它返回一个 OptionalLong

public static OptionalLong ack(long m, long n) //...
//No result
return OptionalLong.empty();
//Result
return OptionalLong.of(21438999L);

https://www.geeksforgeeks.org/optionallong-orelselong-method-in-java-with-examples/