🔍 재귀 함수
함수 안에 자기 자신을 호출!
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));
}
}
'java 개발일지' 카테고리의 다른 글
백준 Class 1 java #10951 ~ #1546 (0) | 2022.09.26 |
---|---|
백준 Class 1 java #1000 ~ #10950 (0) | 2022.09.25 |
코드업 기초100제, #1092 ~ #1099 (0) | 2022.09.17 |
코드업 기초100제, #1083 ~ #1091 (1) | 2022.09.15 |
코드업 기초100제, #1073 ~ #1082 (1) | 2022.09.13 |
댓글