안녕하세요 코북입니다. 즐거운 설 연휴네요. 즐거운 마음으로 오늘 수열 문제 풀어봤습니다. 먼저 수열 값을 구하는 메소드를 만든 후에 n번째 항까지 출력하도록 반복문을 만들어줬습니다. 위에 나온 수열은 다음 수가 나올 때 1씩 증가한 값이 더해지는 규칙을 가지고 있습니다. 첫 번째에 1이 나온 후 두 번째는 1+1, 세 번째는 1+1+2, 네 번째는 1+1+2+3이 나오게 됩니다. 반복하면 다음과 같은 규칙이 나옵니다.
첫 번째 : 1
두 번째 : 1(첫 번째 값) + 1
세 번째 : 1+1(두 번째 값) + 2
네 번째 : 1+1+2(세 번째 값) + 3
...
n 번째 : (n-1 번째 값) + (n-1)
n이 1인 경우를 제외하면 n을 입력했을 때 n-1 번째 값과 n-1을 더한 값이 결괏값으로 나옵니다. 다음 값에서 기존에 있던 값을 사용하기 때문에 재귀함수를 이용하였습니다.
public class Java11 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("n 입력 : ");
int n = sc.nextInt();
for(int i=1; i<=n; i++)
{
System.out.print(seq(i)+" ");
}
}
public static int seq(int n) {
if (n==1)
{
return 1;
}
else
{
return seq(n-1)+(n-1);
}
}
}
결과로 나온 값을 반복해서 보여줘야 하기 때문에 반복문을 사용하여 결괏값을 출력하도록 하였습니다.
배운 점
값을 나열하여 규칙을 찿는 것을 오랜만에 해본 것 같아 재밌었고, 현상을 보고 규칙성을 도출해 내는 것에 훈련이 더 필요하다고 생각했습니다.
'알고리즘' 카테고리의 다른 글
[Java] 10진수 2진수로 변환 (0) | 2022.02.08 |
---|---|
[Java] 가까운 거리 찾기 (1차원) (0) | 2022.02.08 |
[Java]소인수분해 (0) | 2022.01.25 |
[Java]팩토리얼 - 재귀 함수 (0) | 2022.01.24 |
[Java]최대 공약수, 최소 공배수 구하기(feat.유클리드 호제법) (0) | 2022.01.23 |