작성
·
234
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 이 나오는지 이해가 되실까요? 😊
천천히 읽어보시고 여전히 이해가 안되신다면 다시 질문 남겨주세요.
감사합니다.
제가 for문의 i값에 대해서 잘못 이해하고있었군요 i값만큼 명령문이 실행된다 는것으로 알고나니 의문이 해결되었습니다 후
상세한 답변 감사합니다 :D