인프런 커뮤니티 질문&답변

envy1274님의 프로필 이미지
envy1274

작성한 질문수

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

4. 피보나치 수열

궁금한점있습니다.

작성

·

352

·

수정됨

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

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

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 함수에서 재귀를 여러번 호출하는 수 밖에 없어 보입니다.

envy1274님의 프로필 이미지
envy1274

작성한 질문수

질문하기