错误:变量可能尚未初始化

bla*_*aze 2 java

我正在做关于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)

Jam*_*olk 6

局部变量未使用默认值初始化.查看基本事实的语言规范.