본문 바로가기
java 개발일지

재귀함수 코드업 1091, 1092 / 백준 10872, 10870

by 노랑사랑팽이 2022. 9. 20.

🔍 재귀 함수

함수 안에 자기 자신을 호출!

f(n) = n * f(n-1)

가장 대표적인 개념이 팩토리얼 

 

🌼 코드업 1091

1부터 n까지 출력하기

📝 풀이1

import java.util.Scanner;

public class Main {
	static int startNum = 1; // 전역변수 선언
	
	public static void ascendingNum(int number){
		if(startNum > 0 && number > 0) {
			System.out.println(startNum);
			startNum++;
//			System.out.println("number : " + number);
			ascendingNum(number - 1);
		}
		
	}
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		ascendingNum(n);
				
	}

}

 

📝 풀이2

import java.util.Scanner;

public class Main {
	
	public static void ascendingNum(int number){
		if(number != 1) {
//			System.out.println("number : " + number);
			ascendingNum(number - 1);
		}
		System.out.println(number);
		
	}
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		ascendingNum(n);
				
	}

}

 

📝 풀이3

import java.util.Scanner;

public class Main {
	static int n; // 전역변수 선언
	
	public static void ascendingNum(int number){
		
		System.out.println(number);
		if(number == n) {
			return;
		}
		ascendingNum(number+1);
		
	}
	
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		
		ascendingNum(1); //1부터 시작
				
	}

}

 

 

🌼 코드업 1092

1부터 n까지 역순으로 출력하기

📝 풀이1

import java.util.Scanner;

public class Main {
	
	public static int decreseNum(int number) {
		if(number == 1)
			return 1;
		else
		{
			System.out.println(number);
			return decreseNum(number - 1);
		}
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		decreseNum(n);
		System.out.println(decreseNum(n));

	}

}

 

📝 풀이2

import java.util.Scanner;

public class Main {
	
	public static void decreseNum(int number) {
		if(number != 1) {
			System.out.println(number);
			decreseNum(number - 1);
		}
		else if(number == 1)
			System.out.println(number);
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		decreseNum(n);

	}

}

 

📝 풀이3

import java.util.Scanner;

public class Main {
	static int n;
	
	public static void decreseNum(int number) {
		System.out.println(number);
		if(number == 1)
			return;
		decreseNum(number - 1);
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		
		decreseNum(n);

	}

}

 

 

🌼 백준 10872

팩토리얼

import java.util.Scanner;

public class Main {

	public static int factorial(int number)
	{
		if(number > 0)
			return number * factorial(number - 1);
		else 
			return 1;
		
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		System.out.println(factorial(n));

	}

}

 

 

🌼 백준 10870

피보나치 수 5

f(n) = f(n-2) + f(n-1)

import java.util.Scanner;

public class Main {
	
	public static int fibonacci(int number) {
		if (number == 0)
			return 0;
		else if (number == 1)
			return 1;
		else
			return fibonacci(number - 1) + fibonacci(number - 2);
	}
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		
		System.out.println(fibonacci(n));
		
	}

}

댓글