작성
·
352
·
수정됨
답변 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 함수에서 재귀를 여러번 호출하는 수 밖에 없어 보입니다.