TIL
2024_12_27 TIL
hi_i
2024. 12. 27. 22:33
오늘의 할 일
- 재귀호출
- 클래스 메서드, 인스턴스 메서드
- 연습문제 풀이
재귀호출
- 메서드 내부에서 메서드 자기자신을 다시 호출 : 반복문과 같은 효과
- 반복 속도의 느림 : 매개변수 복사와 종료 한 후 복귀할 주소등을 필요로 하기에 일반적 반복문보다 느리다.
- 논리적 간결함 : 몇겹의 반복문과 조건문으로 복잡한 코드도 재귀호출로 단순한 구조로 변경가능
// 재귀호출 대표 예시(팩토리얼)
//
public class Factorial {
public static void main(String[] args) {
int result = factorial(5);
System.out.println(result);
}
static int factorial(int n){
int result = 0;
//매개변수 n 의 값 비교
if(n == 1) result =1;
// n이 1이 아닐경우 n * 재호출(n-1)
else result = n * (factorial(n-1));
return result;
}
}
재귀호출을 반복문처럼 활용 시 스택 오버플로우를 방지하기 위해 매개변수 n유효성 검사, 반복문의 종료 시점도 같이 고려해 주어야 한다.
메서드(클래스, 인스턴스)
변수와 동일하게 static이 붙은 메서드를 클래스, 나머지를 인스턴스 메서드라 부른다.
인스턴스 메서드는 인스턴스 변수와 관련된 작업을 하는 메서드이고, 인스턴스와 관계없는 메서드는 일반적으로 static을 활용해 클래스 메서드로 정의한다.
- 클래스 메서드 : 클래스 메서드는 인스턴스 변수를 사용할 수 없다. -> 클래스 메서드가 호출되었을 때 인스턴스가 생성되지 않았을 수 도 있음.
- 클래스 멤버는 언제나 참조/호출이 가능하기 때문에 인스턴스 멤버가 클래스 멤버를 사용하는 것은 항상 가능, 클래스 멤버가 호출될 때 인스턴스가 생성되지 않았을 경우가 있기 때문에 클래스 멤버에서 인스턴스 멤버 사용 시에는 인스턴스 생성이 가장 먼저.