프론트엔드 센트럴파크 (☞゚ヮ゚)☞

백준알고리즘_10870 본문

Algorism

백준알고리즘_10870

자라나라나무나무나 2022. 1. 23. 01:39


재귀함수라는 것을 득템했다...!

 

재귀함수

: 하나의 함수가 자신을 다시 호출하여 반복되는 작업을 수행하는 함수

 

반복문 <=> 재귀함수

 


 

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        // int n = Integer.parseInt(sc.nextLine());

        int n = sc.nextInt();

        int result = 0;

        for (int i = 0; i <= n; i++) {
            result = Function(n);
        }
        System.out.println(result);
    }

    public static int Function(int num) {
        if (num == 0) {
            return 0;
        }
        if (num == 1) {
            return 1;
        } else {
            return Function(num - 1) + Function(num - 2);
        }
    }
}


피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 

if (num == 0) {
            return 0;
        }
        if (num == 1) {
            return 1;

이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.

return Function(num - 1) + Function(num - 2);

public static int Function(int num) {
    if (num == 0) {
        return 0;
    }
    if (num == 1) {
        return 1;
    } else {
        return Function(num - 1) + Function(num - 2);
    }
}

스터디 중에 엄청난 오류를 발견했다...!!

재귀함수는 반복문이 될 수 있는데, 나는 반복문도 썼고, 재귀함수도 써서 두개 다 쓸 필요가 없다는 것이다.

 

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

 

출력을 할 때 함수 Function(n)을 넣어서 출력을 하게 하고,

바로 재귀함수를 쓰면 코드도 길이를 줄일 수 있다.

따봉 친구들아 고마워~~

 

'Algorism' 카테고리의 다른 글

백준알고리즘_2742  (0) 2022.02.09
백준알고리즘_9316  (0) 2022.02.09
백준알고리즘_2609  (0) 2022.02.09
백준알고리즘_2460  (0) 2022.01.19
백준 알고리즘_1000  (0) 2022.01.16
Comments