입력받은 정수의 팩토리얼 값 출력하기

 

1. 목표

  • for문을 이용해 입력받은 정수의 팩토리얼 값을 구한다

 

2. 이론

반복문인 for문은 초기값, 조건식, 증감식을 이용해 조건식이 TRUE인 동안 for문 괄호 안의 내용을 반복 실행하게 한다.
초기값으로 정해둔 변수의 값을 증감식을 통해 변화시켜 조건식 FALSE가 되면 반복문을 빠져나가게 된다. 

for(초기값; 조건식; 증감식){ 
       반복 실행할 문장;
  }

 

3. 세부 내용

Scanner sc=new Scanner (System.in);
int result=1;

Scanner 클래스를 이용해 키보드로 값을 입력받는다. 이와 별개로 result에는 초기값 1을 대입해 팩토리얼 계산 시

곱할 수 있도록 설정한다.

 

for(int num=sc.nextInt(); num>0; num--) {
result*=num; 
}

for문에 변수 num을 선언하고, 초기값을 위에서 Scanner를 통해 입력받은 정수로 설정한다. 조건식은 num가 0보다 

큰 값을 가지는 것으로 하고, 증감식에는 num이 1씩 감소하도록 설정했다.

초기값 1이 대입된 result에 num를 곱한 값을 대입시키고, 증감식을 통해 num이 1 감소한 뒤 그 num을 곱해 대입시

키는 식으로 num=1이 될 때까지 곱한 뒤 num=0이 되었을 때 반복문을 빠져나간다.

 

 

4. 실행 결과

키보드로 7을 입력했을 때 결과값으로 7의 팩토리얼인 5040이 출력되었음을 확인할 수 있다. 다른 값을 넣어도 똑같이 팩토리얼값이 잘 출력되었다.

 

 

5. 고찰

전체적으로 코드 자체는 전혀 어렵지 않고, 다만 이 코드를 어떻게 만들어낼지 고민하는 과정이 핵심이 아닐까 싶다. 우선 처음엔 일반적으로 그렇듯 i라는 변수를 따로 선언해 i=0; i<num; i++ 를 사용하려고 했는데, 이런 경우 정작 num값에는 변화가 없고 변화를 주기 위해서는 for문 내에 따로 num--;를 선언해주어야 한다. 하지만 그렇게 만들 경우에도 i는 계속 증가하고 num는 계속 감소하기 때문에 제대로 값이 출력되지 않는 문제가 발생한다.
따라서 입력받은 정수 num을 아예 for문의 초기값으로 선언시키고 그 값을 조절할 수 있도록 설정해보았다. 이렇게 하면 굳이 변수 i를 선언할 필요도 없고 감소 연산자를 for문 내에 추가시킬 필요도 없기 때문에 코드가 훨씬 간단해진다.
또한 result*=num 을 for문 내부에 배치시키고 위에 result=1을 선언시켜 곱하는 데에 문제 없게 조치하였다.

 

 

6. 전체 코드

 

 

'개인 > 풀이' 카테고리의 다른 글

211231 과제  (0) 2021.12.31
211230 과제  (0) 2021.12.30
211228 배열 예제  (0) 2021.12.28
211227 과제  (0) 2021.12.27
211222 java 과제  (0) 2021.12.22

+ Recent posts