public class Recursive {
public static void main(String[] args) {
// 재귀함수 배워보기
Recursive rc = new Recursive();
rc.DFS(3);
}
// 1. DFS 함수 만들기
public void DFS(int n){
// 3. if문으로 멈춰주기
if(n==0){
return;
} else {
// 2. 자기 자신을 반복해서 재귀하게 만듦!
DFS(n - 1);
System.out.print(n + " "); // 4. Stack 형태로 위치 중요 ! 위에
}
}
}
재귀함수기초 문제
먼저 public void DFS라는 함수를 선언해주고,
그 다음 자기 자신을 반복하는 재귀함수를 안에다 넣어준다.
조건에 맞게 if문을 걸어줘서 return을 이용해서 끝내주면 된다!
이러면 스택프레임으로 스택이 쌓이는 것을 그림으로 그릴 수 있는데
예를 들어 2를 넣을 경우
첫 스택에 DFS(2) -> DFS(1) -> DFS(0) 순서대로 실행되고 ,
DFS(2) -> DFS(1) 로 가는 순간에 아래 라인에 있는 System.out.print는 출력되지 않고 마지막까지 함수를 돌고
실행되기 때문에
1 2 << 처럼 결과 값을 원하는대로 얻을 수 있다!
'Algorithm' 카테고리의 다른 글
[재귀함수] 재귀함수 기초 - 3 (0) | 2022.12.08 |
---|---|
[재귀함수] 재귀함수 기초 - 2 (0) | 2022.12.07 |
[프로그래머스] 푸드 파이트 대회 (0) | 2022.11.29 |
[프로그래머스] 다음 큰 숫자 (0) | 2022.11.25 |
[백준] 15886. 내 선물을 받아줘 2 (1) | 2022.11.24 |