[왕초보] 2의 n승 코드 질문드립니다.
조회수 1682회
import java.util.*; public class exam6_3_1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("입력 ㄱ : ");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println("2의 "+a+"승 = "+factor(a));
}
public static int factor(int num) {
if (num==0)
return 1;
else
return 2*factor(num-1);
}
}
전에 만들었던 팩토리알 코드를 응용해서 작성했습니다. 팩토리알 코드 → return n*factor(num-1); 그냥 별 생각없이 n 대신 2를 넣었는데 실행이됐습니다. 문제는 왜 제대로 출력이 되는지 이해를 못하겠습니다.
예를들어 5를 입력하면 2*4*3*2*1 로 48이 나와야 하는게 아닌지..... 고수님들 부탁드립니다.
1 답변
-
코딩이란 게 뭐가 안 돼도 이상하지만 뭐가 돼도 이상하죠. ㅋㅋ 여기서
factor()
함수가 뭘 하느냐면:0
보다 큰 수가 들어오면 그 수에서1
을 빼서factor()
함수 돌리고 그 값에2
를 곱해서 돌려줍니다.0
이 들어오면1
을 돌려줍니다.
따라서:
factor(5) = 2*(factor(4)) = 2*(2*(factor(3))) = ... = 2*2*2*2*2*1 = 2^5
댓글 입력