저는 Ackermann 기능에 관한 책 연습을하고 있습니다.오류 : 변수가 초기화되지 않았을 수 있습니다.
나는 한 가지 질문이 있습니다. 결과를 선언했지만 초기화하지 않으면 컴파일러는 "변수 결과가 초기화되지 않았을 수 있습니다."라고 불평합니다.
int result;
기본값을 0으로 설정하면 불평하지 않습니다.
int result = 0;
유형이 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));
}
}
초기화되지 않은 int 변수가 0이 아닌 값을 가질 수 있다는 것을 암시하는 것처럼 보입니다. 어쨌든 Java에서는 false입니다. 명시 적으로 초기화되지 않은 멤버 변수는 항상 값 0을 가지며 로컬 변수를 초기화하지 않으면 OP가 감지 될 때 컴파일 오류가 발생합니다. 따라서 현지인을 초기화하지 않는 것이 좋지 않습니다. 컴파일러 오류입니다. 그리고 멤버를 초기화하지 않는 것은 좋지 않을 수도 있지만 순전히 가독성 문제이며 0이 아닌 변수와 아무 관련이 없습니다. – sepp2k