공부하기/코드업

[Java] 코드업 풀기 1902 - 1부터 n까지 역순으로 출력하기

XEV 2023. 1. 23. 00:01

자바 코드업 1902번

재귀함수

https://codeup.kr/problem.php?id=1902 

 

(재귀 함수) 1부터 n까지 역순으로 출력하기

정수 $n$부터 $1$까지 출력하는 재귀함수를 설계하시오. 이 문제는 반복문 for, while 등을 이용하여 풀수 없습니다. 금지 키워드 : for while goto

codeup.kr

 

 

 

 

 

문제 보기

분류: 재귀함수

 

 

 

 

 

문제 풀기

base case 와 recursive case 를 나누어 생각하고 재귀 함수를 작성한다.

현재의 재귀 함수에서 다음 재귀 함수로 진입하는 과정에서 출력 코드의 순서를 상기한다.

 

https://xcevor.tistory.com/220

 

[Java] 코드업 풀기 1901 - 1부터 n까지 출력하기

자바 코드업 1901번 재귀함수 https://codeup.kr/problem.php?id=1901 (재귀 함수) 1부터 n까지 출력하기 $1$부터 정수 $n$까지 출력하는 재귀함수를 설계하시오. 이 문제는 반복문 for, while 등을 이용하여 풀수

xcevor.tistory.com

이전에 풀이 하였던 오름차순으로 출력하는 것에 대비하여 내림차순으로 출력을 진행한다.

이때, 출력 코드와 재귀 함수의 실행 순서는 서로 다른 결과를 보여줌을 확인할 수 있는데 재귀 함수 실행 구조에 대한 이해를 높일 수 있다.

추후 재귀 함수의 적용과 실행에 도움이 될 듯 하다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
	    
		Scanner sc = new Scanner(System.in);
		
		int num = sc.nextInt();
		
		fnRecursion (num); // 재귀함수 진입.
		
		sc.close();
	}
	
	public static void fnRecursion (int n) {
	    //////////////////
	    // base case.
	    if (n == 1) {
	        System.out.println(n);
	        return;
	    }
	    
	    //////////////////
	    // recursive case.
	    // 현재 함수 내의 n 값을 들고 있으며, 다음 재귀 함수에 접근하기 전에 출력이 이루어짐.
	    System.out.println(n);
	    
	    fnRecursion (n - 1); // 다음 재귀함수에 접근.
	    
	}

}