949, 1/48 회원가입  로그인  
   taeho0932
   c언어 재귀함수 질문이요.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=625 [복사]


#include<stdio.h>

int re(int num)
{
int total=2;
if(num>1)
  total=total*re(num-1);
return total;
}


void main()
{

int n;

printf("정수 입력 : ");
scanf("%d", &n);

printf("2의 %d승은 %d \n", n, re(n));

}




정수를 입력받아서 그에대한 승수를 재귀함수를 이용해서 출력하는것인데요.
궁금한게 생겨서 이렇게 글을 올려봅니다..


int re(int num)
{
int total=2;
if(num>1)
  total=total*re(num-1);
return total;
}
이 함수부분이 재귀함수를 이용해서 승수를 뽑아내는것인데요..

total= total*re(num-1)이자나요
제가 8을 입력하면 반복을해서 256를 출력하는데요.
여기서 total = 2*7 =14, total=14*6 =84.......이런식으로 진행하면 출력값인 256이 훨씬
넘어버리는데 어떻게 256이 출력돼는건가요?
제가 잘못이해하고 있는건가요?

  Hit : 3553     Date : 2012/07/31 08:44



    
보안왕 님께서 말한거는 리턴값이 계속된 제곱으로 256을 초과 하신다고 하였는데

위에 문은 2를 num의 갯수만큼 반복하여 곱하게 됩니다.
2*2*2*2*2*2*2*2 그래서 값이 256이 나오게 됩니다.
2012/08/01  
taeho0932 아항...그렇군요.... 답변 감사합니다 ㅎㅎ 2012/08/01  
보안왕 ^^ 2012/08/01