본문 바로가기

Java/Java 알고리즘 인프런

[Ch.07 - Recursive] 01. 재귀함수

반응형

1. 재귀함수

자연수 N이 입력되면 재귀함수를 이용하여 1부터 N까지 출력하는 프로그램을 작성하세요.

 

입력설명

첫 번째 줄은 정수 N(3<=N<=10)이 입력된다.

 

출력설명

첫째 줄에 출력한다.

 

입력예제

3

 

출력예제

1 2 3

 


#main 함수, DFS 함수, 솔루션함수

  1. main 함수 : int n변수를 입력받아, solution(n)을 통해 함수 호출
  2. solution 함수 : 파라미터로 받은 n을 이용해 재귀함수 호출
  3. DFS 함수 : n==0이 될때까지 재귀함수 호출
package recursive.ch07;

import java.util.Scanner;

public class Recursive02 {
	//이진수 출력
	//10진수 입력시 2진수로 변환해 출력
	
	public static void main(String[] args) {
		Recursive02 T = new Recursive02();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		T.solution(n);
		kb.close();
	}
	public void solution(int n) {
		DFS(n);
	}
	public void DFS(int n) {
		if(n==0)
			return;
		else {
			DFS(n/2);
			//10진수 n을 2로 나누어 ->만약 4라면 -> 2 -> 1 -> 0 -> 4%2 =0,2%2=0, 1%2=1,  -> 100
			System.out.print(n%2);
		}
	}

}

 

 

solution함수 없어도

->DFS함수에서 재귀함수 구현 가능

package recursive.ch07;

import java.util.Scanner;

public class Recursive01 {
	//재귀함수 -> 함수 3개 필요함, 메인함수, 호출함수, 솔루션함수
	//1부터 N까지 출력

	public static void main(String[] args) {
		Scanner kb = new Scanner(System.in);
				int n=kb.nextInt();
		DFS(n);
		kb.close();
	}
	
	static void DFS(int n) {
		if(n==0)
			return;
		//꼭 필요한 구문 -> 반환하기 위해
        
		else {
			DFS(n-1);
			//DFS(3) -> DFS(2) -> DFS(1) -> DFS(0)  ->return -> print(1)print(2)print(3)
			System.out.print(n+" ");
		}
	}

}
반응형