我正在做关于Ackermann功能的书籍练习.
我有一个问题.如果我声明结果但不初始化它,编译器会抱怨"变量结果可能没有初始化".
int result;
Run Code Online (Sandbox Code Playgroud)
当我将其设置为默认值为0时,它不会抱怨.
int result = 0;
Run Code Online (Sandbox Code Playgroud)
我认为当一个声明一个类型为int的变量时,它会自动默认为0.
这是完整的代码:
public class Ackermann {
public static int ack(int m, int n) {
int result = 0;
//int result;
if (m == 0)
result = n + 1;
else if(m > 0 && n == 0)
result = ack(m-1, 1);
else if(m > 0 && n > 0)
result = ack(m-1, ack(m, n-1));
return result;
}
public static void main(String[] args) {
System.out.println(ack(3, 3));
}
}
Run Code Online (Sandbox Code Playgroud)