6-2 Parameter 강의에서 질문이 있습니다
274
작성한 질문수 4
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 이 나오는지 이해가 되실까요? 😊
천천히 읽어보시고 여전히 이해가 안되신다면 다시 질문 남겨주세요.
감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
71
1
사고력 키우는 법이 어떤게 있나요?
0
93
2
getter setter
0
103
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
80
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
76
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
115
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
117
2
응용이 어렵습니다.
0
206
2
IntelliJ가 보이지 않습니다.
0
186
3
JDK 버전 문의
0
129
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
121
2
Iterator 문의
0
105
1
코드 순서 문의
0
143
1
클래스 메소드
0
149
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
80
2





