• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

6-2 Parameter 강의에서 질문이 있습니다

23.06.12 06:52 작성 조회수 198

0

 public static void powerByExP(int number, int exponent) {

int result = 1;

for(int i = 0; i < exponent; i++) {

result *= number;

}

에서 result*=number; 식에대해서 이해가 안됩니다

기존에는 for문을 쓰면 i 값이 기재가 되어야 i값이 적용이 되는걸로 알고있는데

result = result * number * ( i )

인건가요???

숫자를 대입하면 1 = 1*2 로 2가 나올것같은데 2^3 인 8이 나오는게 이해가 안됩니다..

제가 for문에 대해서 제대로 이해를 못하고있는걸까요? 위식에서는 i값을 넣은곳이 없는데 어떻게 반복이 되는건지 잘 모르겠습니다...

답변 1

답변을 작성해보세요.

0

안녕하세요?

충분히 가질 수 있는 궁금증이네요 😊
먼저 for 반복문에 대해 복습부터 해볼까요?

for 문은 다음과 같이 생겼습니다.

// for (① 선언; ② 조건; ③ 증감)
for (int i = 0; i < 어떤 값; i++) {
    ... 반복 수행할 명령문 ...
}

① 선언
int i = 0; 부분은 선언입니다. 이 반복문에서 사용할 변수를 만들고 처음 값을 정의하는 것입니다.

② 조건
i < 어떤 값; 부분은 조건입니다. 현재 i 의 값이 이 조건을 만족한다면 반복을 계속해서 수행하는 것이죠.

③ 증감
i++ 부분은 증감입니다. 반복을 수행하고 나서 i 의 값을 증가 또는 감소시키는 것이죠. 그리고 이렇게 변경된 값이 다시 ② 의 조건에 만족한다면 다음 반복을 이어서 수행하게 됩니다.

그래서 위 반복문은 처음에 i 를 0 으로 설정하고, i 가 어떤 값보다 작다는 조건을 만족하는 동안 명령을 반복 수행하고, 수행한 뒤에는 i 를 증가시켜서 다음 반복을 이어갑니다. 이때 '반복 수행할 명령문' 에서 i 가 사용되어야 한다는 제약은 없어요.

만약 다음과 같이 반복문을 작성하게 되면 '반복 수행할 명령문' 은 3차례 반복해서 수행됩니다.

// 어떤 값을 3 으로 설정
for (int i = 0; i < 3; i++) {
    ... 반복 수행할 명령문 ...
}

다음과 같이 반복문을 작성하게 되면 '반복 수행할 명령문' 은 10차례 반복해서 수행됩니다.

// 어떤 값을 10 으로 설정
for (int i = 0; i < 10; i++) {
    ... 반복 수행할 명령문 ...
}

중요한 것은, i 라는 값은 물론 필요하다면 '반복 수행할 명령문' 내에서 쓰일 수도 있지만 반드시 써야만 하는 것은 아닌거죠.

질문의 코드로 돌아와서 다음과 같이 반복문을 작성하게 되면 i 는 0 부터 시작해서 exponent 라는 값보다 작다는 조건을 만족하는 동안 그저 수차례 수행하게 될 뿐입니다. 그리고 반복문 내에서는 result 라는 값에 number 를 곱한 값을 다시 result 라는 변수에 업데이트해주는 것이죠.

int result = 1;
for(int i = 0; i < exponent; i++) {
    result *= number;
}

number 가 2 이고 exponent 가 3 이면 어떻게 될까요?

int result = 1;
for(int i = 0; i < 3; i++) {
    result *= 2;
}

i 는 0, 1, 2 로 증가하는 동안 총 3 번에 걸쳐서 반복문이 수행될 것입니다.

즉 위의 for 문은 다음 코드와 완전히 동일해지는 거에요.

int result = 1;
result *= 2; // 현재 result 값 1 에 2 를 곱한 결과를 업데이트 = 2
result *= 2; // 현재 result 값 2 에 2 를 곱한 결과를 업데이트 = 4
result *= 2; // 현재 result 값 4 에 2 를 곱한 결과를 업데이트 = 8

어떻게 해서 8 이 나오는지 이해가 되실까요? 😊
천천히 읽어보시고 여전히 이해가 안되신다면 다시 질문 남겨주세요.
감사합니다.

Hoit님의 프로필

Hoit

질문자

2023.06.12

제가 for문의 i값에 대해서 잘못 이해하고있었군요 i값만큼 명령문이 실행된다 는것으로 알고나니 의문이 해결되었습니다 후

상세한 답변 감사합니다 :D