I am writing a recursive program which calculates the Ackermann function.
Here is the code:
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));
}
}
But it shows me mistakes:
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
How can this be fixed?
Simply use
Your last ternary operator is useless, and wasn’t even complete (missing the
elsepart).