코딩테스트/기타

[이론 - 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되면서 복귀하는 주소인 출력부터 수행하기 때문에 호출 위치에 따라 값이 다르다