인프런 커뮤니티 질문&답변

크림코딩님의 프로필 이미지

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

전달값 (Parameter)

전달값(Parameter) 강의에서 for문 이해가 필요합니다

작성

·

334

0

 안녕하세요 나도코딩님 새해복 많이받으세요!

전달값(Parameter) 강의 듣고있는데

public static void powerByExp(int number, int exponent) { // 전달값을 2개 받는경우

int result = 1;

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

result = result * number;

}

System.out.println(number + " 의 " + exponent + " 승은 " + result);

powerByExp(3,3);  // 3 * 3 * 3 = 8

여기서 for문의 사용법이 이해가 안가는데

result = result * number;

3의 3승을 한다고했을때

3 * 1, 3 * 3, 9 * 3는 이렇게 3번 계산하는거잖아요?

그러면 이걸 출력한다고하면

System.out.println(number + " 의 " + exponent + " 승은 " + result); 
result는 27이 나오는데 

마지막 9 * 3 만 result라고 해석하는건가요?

3*1, 3*3 은 왜 result 라고 해석을 안하는건가요?

매소드 너무 어렵습니다.. ㅠㅠ

 

 

답변 3

2

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
반복문에 진입하기 전에 result 변수는 먼저 1로 초기화가 되어 있습니다. 그리고 반복문을 돌면서 3을 곱하는 작업을 3번 하면서 각 결과를 result 에 집어넣게 되지요. 그런 다음에 마지막으로 result 값을 출력하게 됩니다.
즉 result = result * 3 이라는 연산을 할 때,
반복문 1회차 = 1 x 3 = 3 (result 변수에 저장됨)
반복문 2회차 = 3 x 3 = 9 (result 변수에 저장됨)
반복문 3회차 = 9 x 3 = 27 (result 변수에 저장됨)
와 같이 동작하므로 최종적으로 result 변수에 저장된 27 이라는 값이 println 을 통해서 출력되는 것입니다.
이해가 되셨을까요? ^^ 여전히 헷갈리신다면 다시 질문 남겨주세요!
감사합니다.
새해 복 많이 받으세요 :)

0

?

3 * 3 * 3 = 27아닌가?

powerByExp(3,3); // 3  3  3 = 8

0

크림코딩님의 프로필 이미지
크림코딩
질문자

아..이해됬습니다 감사합니다!!