• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

궁금한점있습니다.

23.04.05 22:59 작성 23.04.05 23:00 수정 조회수 269

0

안녕하세요. 강사님

재귀함수로 구현을 할 때 아래 코드에서 어떤 코드를 추가해야지 원소를 나열 할 수 있을까요?

 

public class Main{
    public int solution(int n){

        if(n < 3){
            return 1;
        }
        return solution(n - 2) + solution(n - 1);

    }
    public static void main(String[] args) {
        MainT = new Main();
        int n = 10;

        System.out.println(T.solution(n));

    }
}

답변 2

·

답변을 작성해보세요.

0

방수영님의 프로필

방수영

2024.01.21

혹시 재귀함수로 해당 문제 푸시다면, 요런 방식은 어떠실가요?

import java.util.Arrays;
import java.util.Objects;
import java.util.Scanner;
import java.util.stream.Collectors;

public class Main {
    public static int[] solution(int size, int[] intArr) {
        // 앞의 수를 합하여 다음숫자가됨
        // ex) 1 1 2 3 5 8 13
        if(size < 0) return intArr;

        intArr = solution(size - 1, intArr);

        if(size == 0 || size == 1){
            intArr[size] = 1;
        } else {
            intArr[size] = intArr[size-1] + intArr[size-2];
        }

        return intArr;
    }

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

        int size = in.nextInt();

        int[] intArr = Objects.requireNonNull(solution(size - 1, new int[size]));

        String result = Arrays.stream(intArr)
                .mapToObj(String::valueOf)
                .collect(Collectors.joining(" "));

        System.out.println(result);


    }

 

0

안녕하세요^^

위에 재귀함수는 피보나치 수열의 n번째 원소를 반환해주는 재귀함수입니다. 이 재귀에 뭘 추가해서 피보나치 수열의 모든 원소를 나열할 수 없습니다. main 함수에서 재귀를 여러번 호출하는 수 밖에 없어 보입니다.