코딩테스트/기타
[이론 - stack] 재귀함수 .java
머밍
2024. 11. 13. 01:53
문제
재귀함수 N 1 자연수 이입력되면재귀함수를 이용하여 부터 까지를 출력하는 프로그램을 작성하세요
입력
첫 번째 줄은 정수 N(3<=N<=10) 이 입력된다
출력
첫째 줄에 출력한다
입력예
3
출력예
1 2 3
내 풀이
import java.util.Scanner;
public class Main {
public static void dfs(int n) {
if(n==0) return;//함수종료
else {
//System.out.print(n + " ");//출력 3 2 1
dfs(n-1);//재귀함수
System.out.print(n + " ");//출력 1 2 3
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
dfs(n);
}
}
재귀함수는 스택 프레임을 사용
=> 백트레킹
스택 프레임에 실제 저장되는 것은 매개변수, 지역변수, 복귀 주소 등이 있다
즉, 출력되기 전에 재귀함수를 호출하기 때문에 나중에 return되면서 복귀하는 주소인 출력부터 수행하기 때문에 호출 위치에 따라 값이 다르다