我正在编写一个计算 Ackermann function 的递归程序。
这是代码:
public class Ackermann{
public static long ackermann( long m,long n) {
return
(m==0)? n+1:
(m>0 && n==0)? ackermann(m-1,1):
(m>0 && n>0)? ackermann(m-1, ackermann(m,n-1));
}
public static void main(String[]args) {
long m=4;
long n=2;
System.out.println(ackermann(m,n));
}
}
但它显示了我的错误:
Ackermann.java:7: : expected
(m>0 && n>0)? ackermann(m-1, ackermann(m,n-1));
^
Ackermann.java:7: ';' expected
(m>0 && n>0)? ackermann(m-1, ackermann(m,n-1));
^
Ackermann.java:18: illegal start of expression
public static void main(String[]args){
^
Ackermann.java:18: ';' expected
public static void main(String[]args){
^
Ackermann.java:18: illegal start of expression
public static void main(String[]args){
^
Ackermann.java:18: ';' expected
public static void main(String[]args){
^
Ackermann.java:18: ';' expected
public static void main(String[]args){
^
Ackermann.java:26: reached end of file while parsing
}
^
8 errors
如何解决这个问题?
最佳答案
只需使用
public static long ackermann(long m, long n) {
return (m==0)?
n+1:
(m>0 && n==0)?
ackermann(m-1,1):
ackermann(m-1, ackermann(m,n-1));
}
您最后一个三元运算符没有用,甚至还没有完成(缺少
else
部分)。关于java - 阿克曼函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2935680/